我有一个需要PIL的django应用程序而且我遇到了错误所以我决定在我的托管服务器上使用PIL。
PIL安装在我的虚拟环境中。但是,运行以下内容时出现错误,当我在虚拟环境外运行时,它会起作用。
Python 2.7.3 (default, Apr 16 2012, 15:47:14)
[GCC 4.4.6 20110731 (Red Hat 4.4.6-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import Image
>>> im = Image.open('test.png')
>>> im
<PngImagePlugin.PngImageFile image mode=RGBA size=28x22 at 0x7F477CFFAE18>
>>> im.convert('RGB')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/opt/python27/lib/python2.7/site-packages/PIL-1.1.7-py2.7-linux-x86_64.egg/Image.py", line 679, in convert
self.load()
File "/opt/python27/lib/python2.7/site-packages/PIL-1.1.7-py2.7-linux-x86_64.egg/ImageFile.py", line 189, in load
d = Image._getdecoder(self.mode, d, a, self.decoderconfig)
File "/opt/python27/lib/python2.7/site-packages/PIL-1.1.7-py2.7-linux-x86_64.egg/Image.py", line 385, in _getdecoder
raise IOError("decoder %s not available" % decoder_name)
IOError: decoder zip not available
>>>
答案 0 :(得分:4)
您在virtualenv中使用的Python很可能是由您自己构建的,而不是系统Python - 是吗?如果是这样,那么问题是在构建Python本身时,系统中没有安装zlib的头文件(.h)。
在构建将在virtualenv上使用的Python时,必须在Linux中使用“ziplib-devel”(或等效)软件包。您可以通过从Python控制台尝试import zlib
来测试它是否有效。
作为重建Python的替代方法,您可以找到系统的Python zip相关文件,并将它们复制到virtualenv中使用的Python(如果它们是相同的Python版本)。
答案 1 :(得分:0)
你可以尝试Pillow这是一个重新包装的PIL,它可以用virtualenv播放得更好。