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 zlibPython コンソールから試して、動作するかどうかをテストできます。

Python を再構築する代わりに、システムの Python zip 関連ファイルを見つけて、それらを virtualenv で使用されている Python にコピーできます (それらが同じ Python バージョンである場合)。

于 2012-05-31T19:19:33.880 に答える
0

virtualenvでよりうまく機能する再パッケージ化されたPILであるPillowを試すことができます。

于 2012-05-31T20:50:04.160 に答える