Snow LeopardでPython Imaging(PIL)を修正する

Snow Leopardに切り替えた後、ImageFieldsはDjangoで動作しなくなりました。 その理由は、PILが動作不能であったか、libjpegにバインドされていたためです。

(典型的なエラーメッセージ: ImportError: dlopen(/Library/Python/2.6/site-packages/PIL/_imaging.so, 2): Symbol not found: _jpeg_resync_to_restart







問題の解決策はここで部分的に説明されています(英語)

ここからダウンロード:

tar zxvf jpegsrc.v6b.tar.gz

cd jpeg-6b

cp /usr/share/libtool/config/config.sub .

cp /usr/share/libtool/config/config.guess .

./configure --enable-shared --enable-static

make

sudo make install









しかし、私は「幸運」で、すぐには動作しなかった人たちの中にいました-その理由は「zoo」にインストールされたlibjpeg'ovにありました。

そのため、以下を実行します。

1.すべての_imaging依存関係を確認します。

otool -L /Library/Python/2.6/site-packages/PIL/_imaging.so





2. /Library/Python/2.6/site-packages/PIL/_imaging.so:

/sw/lib/ libjpeg.62.dylib (compatibility version 63.0.0, current version 63.0.0)





ようなものが得られ/Library/Python/2.6/site-packages/PIL/_imaging.so:

/sw/lib/ libjpeg.62.dylib (compatibility version 63.0.0, current version 63.0.0)





/Library/Python/2.6/site-packages/PIL/_imaging.so:

/sw/lib/ libjpeg.62.dylib (compatibility version 63.0.0, current version 63.0.0)







その後、次の2つの方法で解決できます。

a)「zoo」ライブラリを削除します(私の場合-/ sw / libから、すべてを再構築します)

b)削除がオプションではない場合、Python _imagingを、新しく作成された正しいライブラリにリンクできます: install_name_tool -change /sw/lib/ libjpeg.62.dylib /usr/local/lib /libjpeg.62.dylib _imaging.so





install_name_tool -change /sw/lib/ libjpeg.62.dylib /usr/local/lib /libjpeg.62.dylib _imaging.so







その後、すべてが動作するはずです:)



All Articles