1

我有一个需要 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
>>> 
4

2 回答 2

4

您在 virtualenv 中使用的 Python 很可能是您自己构建的,而不是系统 Python - 对吗?如果是这样,您的问题是在构建 Python 本身时,您的系统中没有安装 zlib 的头文件 (.h)。

在构建您将在 virtualenv 上使用的 Python 时,您必须在 Linux 中拥有“ziplib-devel”(或等效)包。您可以通过尝试import zlib从 Python 控制台测试它是否有效。

作为重建 Python 的替代方法,您可以找到系统的 Python zip 相关文件并将它们复制到 virtualenv 中使用的 Python(如果它们是相同的 Python 版本)。

于 2012-05-31T19:19:33.880 回答
0

你可以试试Pillow,它是一个重新打包的 PIL,它与 virtualenv 配合得更好。

于 2012-05-31T20:50:04.160 回答