我在虚拟环境中安装了Pillow和qrcode模块。
从Python shell中,我可以使用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类,但从shell中可以工作?
from PIL import ImageDraw
在 shell 上也能用吗?如果该模块在PIL
包中某种方式丢失,qrcode
将假定Image
也从PIL
包中丢失,并尝试从顶层导入它,这将导致你看到的问题。 - abarnertfrom PIL import Image
之后,只需键入Image
并查看它给出的路径。它是否在/home/vagrant/.virtualenvs/env1/blah/blah
内部? - abarnert