У меня установлены модули Pillow и qrcode в виртуальной среде.
Из оболочки python я могу программно создать тестовый образ с помощью PIL:
>>> from PIL import Image
>>> img = Image.new('1', (200, 200))
>>> img.save('test-image.jpeg', 'JPEG')
Отлично, это работает именно так, как я ожидал. Однако я получаю эту ошибку, когда пытаюсь использовать модуль, основанный на PIL:
>>> import qrcode
>>> qr_code = qrcode.make("1")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/vagrant/.virtualenvs/env1/local/lib/python2.7/site-packages/qrcode/main.py", line 8, in make
return qr.make_image()
File "/home/vagrant/.virtualenvs/env1/local/lib/python2.7/site-packages/qrcode/main.py", line 186, in make_image
from qrcode.image.pil import PilImage
File "/home/vagrant/.virtualenvs/env1/local/lib/python2.7/site-packages/qrcode/image/pil.py", line 5, in <module>
import Image
ImportError: No module named Image
Почему qrcode не может импортировать класс PIL Image, но он работает из оболочки?
from PIL import ImageDraw
на оболочке? Если этот модуль каким-то образом отсутствует в пакетеPIL
,qrcode
предположит, чтоImage
также отсутствует в пакетеPIL
, и попытается импортировать его с верхнего уровня, что вызовет именно ту проблему, которую вы видите. - person abarnert   schedule 02.10.2013from PIL import Image
просто введитеImage
и посмотрите, какой путь он вам даст. Это внутри/home/vagrant/.virtualenvs/env1/blah/blah
или нет? - person abarnert   schedule 02.10.2013