4

PIL setup.py ビルドからの背景のビット:

--------------------------------------------------------------------
PIL 1.1.7 SETUP SUMMARY
--------------------------------------------------------------------
version       1.1.7
platform      linux2 2.6.2 (release26-maint, Apr 19 2009, 01:58:18)
              [GCC 4.3.3]
--------------------------------------------------------------------
*** TKINTER support not available
--- JPEG support available
--- ZLIB (PNG/ZIP) support available
--- FREETYPE2 support available
*** LITTLECMS support not available
--------------------------------------------------------------------

これはUbuntu 9.04のインストールにあります。

Djangoがさまざまな画像(さまざまな形式)をアップロードしてサイズ変更できるようにするために必要なのはPILだけです。残念ながら、現時点では JPEG を処理できません。PIL の selftest.py を実行した後、次のようになりました。

*** The _imaging C module is not installed

python -v インタープリターを使用して Image と _imaging をインポートしようとしました (どちらも機能しました)...

>>> from PIL import Image
import PIL # directory PIL
# PIL/__init__.pyc matches PIL/__init__.py
import PIL # precompiled from PIL/__init__.pyc
# PIL/Image.pyc matches PIL/Image.py
import PIL.Image # precompiled from PIL/Image.pyc

【しばらく順調に継続中】

>>> import _imaging
dlopen("/usr/local/lib/python2.6/dist-packages/PIL/_imaging.so", 2);
import _imaging # dynamically loaded from /usr/local/lib/python2.6/dist-packages/PIL/_imaging.so

そのため、Python インタープリターを使用すると _imaging を使用できますが、何らかの理由で他のインスタンスでは正しくインポートされません。

過去数時間、この問題の解決策を探していましたが、解決策を見つけることができませんでした。私はばかげて明らかな何かを見逃していますか?または、なぜそれが機能しないのかについてのアイデアはありますか?

前もって感謝します!

また: http://effbot.org/zone/pil-imaging-not-installed.htmを認識していますが、それはエラーを示しているだけで、解決策はありません。

編集:私は詮索してきましたが、_imagingmath のインポートが問題であるようです。python -vv selftest.py を実行して、どこが壊れているかを確認しました。これがどのように発生したかです。

dlopen("/usr/local/lib/python2.6/dist-packages/PIL/_imagingmath.so", 2);
import _imagingmath # dynamically loaded from /usr/local/lib/python2.6/dist-packages/PIL/_imagingmath.so
*** The _imaging C module is not installed
# clear __builtin__._
[etc. etc. etc.]
4

3 に答える 3

5

PIL をインストールする前は、libjpeg がインストールされていなかったようです。したがって、libjpeg-62 と libjpeg62-dev をインストールしてから、PIL を再インストールしました。同じエラーが発生しました

*** The _imaging C module is not installed

別の Web サイトで、ソースから PIL を強制的に再構築することを提案する潜在的な解決策を見つけました。

sudo python setup.py build_ext -f

これにより、このエラーに関するいくつかの興味深い情報が得られました (この問題も発生している場合)。gcc がさまざまなファイルを適切にコンパイルしていないようです (gcc4.3.3 を使用しています)。つまり、次のとおりです。

_imaging.c:3017: warning: initialization from incompatible pointer type
_imaging.c:3077: warning: initialization from incompatible pointer type
libImaging/Quant.c: In function 'rehash_collide':
libImaging/Quant.c:154: warning: cast to pointer from integer of different size

(他は問題ないようです)

私はこれについて少し調査を行いました.PILを構築するために使用しているgccのバージョンが、私が使用しているpython.org Pythonを構築するために使用したバージョンとは異なるためです. これは非常に理にかなっています。 これは、これを示唆する私が見つけた他の質問です

最後に、最後のインストールを 1 つ試みましたが、今回は、ダウンロードした tar ではなくリポジトリからインストールしました。これで問題は解決したようです。

sudo apt-get install python-imaging

元の問題に完全に答えたわけではありませんが、代替の解決策を見つけました。上記の情報がこの状況で他の誰かを助けることができることを願っています!

于 2010-11-08T13:06:44.510 に答える
2

開発用 libjpeg をインストールして、これを修正しました。

sudo apt-get install libjpeg8-dev

次に、PIL モジュールを完全に再インストールします。

(私は仮想環境を使用していますが、Python を標準で実行するのと同じように動作するはずです)

于 2011-09-09T11:45:50.960 に答える
0

libjpegライブラリをインストールしていません。これを行う:

sudo apt-get install libjpeg

PILインストールを再実行します。

于 2010-11-06T12:48:00.183 に答える