有一天,我试图深入探究this问题并提供一些见解。也许有了更多的见解,它最终可以解决。Mac OS Snow Leopard,IPython笔记本matplotlib后端与libpng不匹配
注意事项:
- 我安装different Python version is not an option(我做它的心跳),因为我需要使用Gurobi线性规划求解。
- matplotlib与libpng 1.5.14编译,并在运行时链接就好了。在IPython控制台中,我可以使用它来完美地绘制png图形。
- 由于之前的观点,我认为这个错误必须发生在IPython Notebook中使用的后端,该后端也使用matplotlib编译。
- 我正在尝试matplotlib 1.3的源代码,如果有人可以使它与以前的,不太旧的版本工作,我也会很高兴。
所以,当我试图在笔记本上绘制一些东西时,我从matplotlib中得到正常的文本输出没有数字。在那里,我开始在笔记本电脑终端,我可以看到以下错误:
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
我继续downloaded the source code对的Tcl/Tk 8.6和编译他们自己希望他们编译libpng,但事实并非如此。我还是得到了同样的错误:
libpng warning: Application built with libpng-1.2.41 but running with 1.5.14
当我编译matplotlib它说,由于补丁它船舶自身的libagg,我无法找到该tkagg它是使用,所以也许这就是出问题?或者是由Tk编译的系统提供的Python 2.6与旧的libpng链接?
我想我可以尝试编译matplotlib对照libpng版本的Tcl/Tk 8.5或Python框架中可用的一个,看看是否都在libpng版本1.2.41上运行。
有没有人知道在后端可能发生这种情况,以及如何解决编译使用正确的libpng版本?
you_were_劫持线程,因为您发布的内容不是答案。发布一个新问题对你来说是好事,因为没有多少人会看到你的“问题答案”。 – tacaswell
,你可以用osx标签替换至少一个标签吗?这真的需要由mac专家看到。 – tacaswell
好的,添加了osx标签,谢谢你的提示。我很惊讶,因为在我之前还有两个非答案,至少我试图进一步解决问题。 – Midnighter