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

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


Source: https://habr.com/ru/post/J72549/


All Articles