先日、私はこの質問をより深く掘り下げ、いくつかの洞察を提供しようとしていました. 追加の洞察により、最終的に解決できる可能性があります。
注意事項:
- Gurobi線形計画法ソルバーを使用する必要があるため、別のバージョンの Python をインストールすることは、私にとってはオプションではありません (私ならすぐに実行します)。
- matplotlib は libpng 1.5.14 でコンパイルされ、実行時にリンクされます。IPython コンソールでは、それを使用して png フィギュアを完全にプロットできます。
- 前のポイントのため、matplotlib でコンパイルされている IPython Notebook で使用されるバックエンドでエラーが発生する必要があると思います。
- 私はmatplotlib 1.3のソースを使ってすべてを試しています。誰かが以前のバージョンで機能させることができれば、私も嬉しいです。
したがって、ノートブックで何かをプロットしようとすると、matplotlib put no figure から通常のテキスト出力が得られます。ノートブックを起動した端末で、次のエラーが表示されます。
libpng warning: Application built with libpng-1.2.41 but running with 1.5.14
問題はバックエンドにあるに違いないと以前に結論付けたので、そこにリンクされているライブラリを確認しました。
otool -L /Library/Python/2.6/site-packages/matplotlib-1.3.0-py2.6-macosx-10.6-universal.egg/matplotlib/backends/_tkagg.so
私のシステムの出力は次のとおりです。
/Library/Python/2.6/site-packages/matplotlib-1.3.0-py2.6-macosx-10.6-universal.egg/matplotlib/backends/_tkagg.so:
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.9.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.11)
/System/Library/Frameworks/Tcl.framework/Versions/8.5/Tcl (compatibility version 8.5.0, current version 8.5.7)
/System/Library/Frameworks/Tk.framework/Versions/8.5/Tk (compatibility version 8.5.0, current version 8.5.7)
したがって、おそらく問題のある候補は Tcl と Tk です。それから私は走った:
find /System -name libpng\*
そして確かに私は見つけます:
/System/Library/Tcl/8.4/Img1.4/libpngtcl1.2.24.dylib
/System/Library/Tcl/8.5/Img1.4/libpngtcl1.2.24.dylib
同様にPythonが独自に出荷しています:
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/libpng.3.dylib
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/libpng.dylib
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/libpng12.0.dylib
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/libpng12.dylib
私は先に進み、Tcl/Tk 8.6のソース コードをダウンロードし、libpng に対してコンパイルされることを期待して自分でコンパイルしましたが、そうではありませんでした。私はまだ同じエラーが発生しました:
libpng warning: Application built with libpng-1.2.41 but running with 1.5.14
matplotlib をコンパイルすると、パッチが原因で独自の libagg が出荷され、使用している tkagg が見つからないため、問題が発生する可能性があります。それとも、その古い libpng に対してリンクされている Tk でコンパイルされたシステムによって提供される Python 2.6 ですか?
Tcl/Tk 8.5 の libpng バージョンに対して、または Python フレームワークで利用可能なものに対して matplotlib をコンパイルして、両方が libpng バージョン 1.2.41 で実行されるかどうかを確認できると思います。
バックエンドのどこでこれが発生する可能性があり、正しい libpng バージョンを使用するようにコンパイルを修正する方法を知っている人はいますか?