1

有一天,我试图深入探究this问题并提供一些见解。也许有了更多的见解,它最终可以解决。Mac OS Snow Leopard,IPython笔记本matplotlib后端与libpng不匹配

注意事项:

  1. 我安装different Python version is not an option(我做它的心跳),因为我需要使用Gurobi线性规划求解。
  2. matplotlib与libpng 1.5.14编译,并在运行时链接就好了。在IPython控制台中,我可以使用它来完美地绘制png图形。
  3. 由于之前的观点,我认为这个错误必须发生在IPython Notebook中使用的后端,该后端也使用matplotlib编译。
  4. 我正在尝试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版本?

+1

you_were_劫持线程,因为您发布的内容不是答案。发布一个新问题对你来说是好事,因为没有多少人会看到你的“问题答案”。 – tacaswell

+0

,你可以用osx标签替换至少一个标签吗?这真的需要由mac专家看到。 – tacaswell

+0

好的,添加了osx标签,谢谢你的提示。我很惊讶,因为在我之前还有两个非答案,至少我试图进一步解决问题。 – Midnighter

回答

1

您是否解决了问题?我有一个类似的问题,我通过在构建matplotlib时临时重命名包含libpng的头文件的文件夹(在我的情况下,它是X11)来解决它。安装matplotlib后,重新命名文件夹。

+0

在某些时候,我可以放弃使用系统Python的依赖。所以我编译了我自己的Python版本,然后通过'HomeBrew'安装这些库,然后编译matplotlib就好了。 – Midnighter

相关问题