1

Debian 6 を実行しており、最近 PIL をインストールしました。

zlib および jpeg ライブラリをプリインストールしており、両方とも /usr/lib にあります。

インストール時に setup.py ファイルがライブラリを見つけ、標準を取得します。

--------------------------------------------------------------------
PIL 1.1.7 SETUP SUMMARY
--------------------------------------------------------------------
version       1.1.7
platform      linux2 2.7.3 (default, Jun 29 2012, 22:38:23)
              [GCC 4.4.5]
--------------------------------------------------------------------
*** TKINTER support not available
--- JPEG support available
--- ZLIB (PNG/ZIP) support available
--- FREETYPE2 support available
--- LITTLECMS support available

zlib と jpeg は期待どおりに動作しています。selftest.py の実行も成功します

--------------------------------------------------------------------
PIL 1.1.7 TEST SUMMARY
--------------------------------------------------------------------
Python modules loaded from ./PIL
Binary modules loaded from ./PIL
--------------------------------------------------------------------
--- PIL CORE support ok
*** TKINTER support not installed
--- JPEG support ok
--- ZLIB (PNG/ZIP) support ok
--- FREETYPE2 support ok
--- LITTLECMS support ok
--------------------------------------------------------------------
Running selftest:
--- 57 tests passed.

だから私たちは今のところ喜んでいます。

念のため、python を実行し、zlib デコーダーが動作することをテストします。

Python 2.7.3 (default, Jun 29 2012, 22:38:23)
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import zlib
>>> a=zlib.compress('hello world')
>>> print zlib.decompress(a)
hello world

だから、それは動作します。

ただし、画像を保存しようとすると:

>>> import Image
>>> i = Image.open('a.png')
>>> i.save('b.png')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/site-packages/PIL/Image.py", line 1406, in save
    self.load()
  File "/usr/local/lib/python2.7/site-packages/PIL/ImageFile.py", line 189, in load
    d = Image._getdecoder(self.mode, d, a, self.decoderconfig)
  File "/usr/local/lib/python2.7/site-packages/PIL/Image.py", line 385, in _getdecoder
    raise IOError("decoder %s not available" % decoder_name)
IOError: decoder zip not available

jpeg として保存しようとすると、同じエラーが発生します (ただし、jpeg デコーダーは使用できません)。

Image.core を確認すると、実際には zip_decoder 属性も jpeg_decoder 属性もないことがわかります。

>>> dir(Image.core)
['__doc__', '__file__', '__name__', '__package__', 'bit_decoder', 'blend', 'convert',
'copy', 'crc32', 'draw', 'effect_mandelbrot', 'effect_noise', 'eps_encoder', 'fill', 
'fli_decoder', 'font', 'getcodecstatus', 'getcount', 'gif_decoder', 'gif_encoder',
'hex_decoder', 'hex_encoder', 'linear_gradient', 'map_buffer', 'msp_decoder', 'new', 
'open_ppm', 'outline', 'packbits_decoder', 'path', 'pcd_decoder', 'pcx_decoder', 
'pcx_encoder', 'radial_gradient', 'raw_decoder', 'raw_encoder', 'sun_rle_decoder', 
'tga_rle_decoder', 'tiff_lzw_decoder', 'wedge', 'xbm_decoder', 'xbm_encoder']

私が見ているように、インストール時に適切なライブラリを見つけても、それが何であるかを見つけることができません(したがって、セットアップがライブラリを見つけられないという問題ではありません。適切なデコーダー。

/usr/lib ディレクトリと .so ファイルのアクセス許可を確認して、PIL を何度も再インストールしようとしました。root として PIL を実行して、何らかの問題があるかどうかを確認します。しかし、まだ答えはありません。

誰かがこれを手伝うことができれば、それは素晴らしいことです!

前もって感謝します。

ブルーノ

4

1 に答える 1

5

この問題を解決する簡単な方法は、Pillow notを使用することPILです。

Pillow は「フレンドリーな」PIL フォークです。PIL は Python イメージング ライブラリです。Pillow は Plone コミュニティのために開始され、現在は Plone コミュニティによって維持されています。しかし、Python Web コミュニティの他の多くの人々によって使用されており、おそらく他の場所でも使用されています。

まず、pip uninstall PILインストールされている PIL を削除します。

次に、 と入力しpip install pillowます。

于 2012-06-30T07:24:02.503 に答える