【问题标题】:Mac OS Snow Leopard, IPython Notebook matplotlib backend mismatch with libpngMac OS Snow Leopard、IPython Notebook matplotlib 后端与 libpng 不匹配
【发布时间】:2013-08-08 05:31:00
【问题描述】:

前几天我试图深入研究this 问题并提供一些见解。也许有了额外的见解,它最终可以得到解决。

注意事项:

  1. 为我安装 different Python version is not an option(我会立即安装),因为我需要使用 Gurobi 线性规划求解器。
  2. matplotlib 使用 libpng 1.5.14 编译并在运行时链接就好了。在 IPython 控制台中,我可以使用它完美地绘制 png 图形。
  3. 由于前面的一点,我认为 IPython Notebook 中使用的后端一定会出现错误,该 IPython Notebook 也是使用 matplotlib 编译的。
  4. 我正在尝试使用 matplotlib 1.3 的源代码,如果有人可以使它与以前的版本一起工作,我也会很高兴。

因此,当我尝试在 Notebook 中绘制某些内容时,我从 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

我继续为 Tcl/Tk 8.6 使用 downloaded the source code 并自己编译它们,希望它们能针对 libpng 进行编译,但事实并非如此。我仍然遇到同样的错误:

libpng warning: Application built with libpng-1.2.41 but running with 1.5.14

当我编译 matplotlib 时,它说由于补丁,它会发布自己的 libagg,而我找不到它正在使用的 tkagg,所以也许这就是问题所在?还是系统提供的 Python 2.6 是用 Tk 编译的,它与旧的 libpng 链接?

我想我可以尝试针对 Tcl/Tk 8.5 的 libpng 版本或 Python 框架中可用的版本编译 matplotlib,然后查看是否两者都在 libpng 版本 1.2.41 上运行。

有谁知道这可能发生在后端的哪个位置以及如何修复编译以使用正确的 libpng 版本?

【问题讨论】:

  • 劫持了帖子,因为你发布的不是答案。发布一个新问题对您有利,因为无论如何您都没有多少人看到您的“问题作为答案”。
  • 你能用 osx 标签替换至少一个标签吗?这确实需要mac专家看到。
  • 好的,添加了osx标签,谢谢提示。我很惊讶,因为在我之前还有另外两个非答案,至少我试图进一步解决这个问题。
  • @Midnighter 其他两个答案是 not 非答案!他们的答案和你的不同之处在于你是寻求帮助。其他人都不是——他们中的一个人只是简单地说他/她之前几乎遇到了确切的问题,然后提供了他/她对该问题的解决方案。
  • SO 不是一个讨论区,它是一个 QA 站点。答案应该是答案,而不是对问题的讨论。该功能是使网站最有用的事情之一,当您查找问题时,答案全部(原则上)解决了问题,因此您不必费力地进行长时间的讨论相关问题。

标签: matplotlib osx-snow-leopard ipython ipython-notebook libpng


【解决方案1】:

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

【讨论】:

  • 在某些时候我能够放弃使用系统 Python 的依赖。所以我编译了自己的 Python 版本,然后通过HomeBrew 安装了库,然后编译 matplotlib 就好了。
猜你喜欢
  • 1970-01-01
  • 2011-08-01
  • 1970-01-01
  • 2010-12-26
  • 2011-07-23
  • 1970-01-01
  • 2011-09-13
  • 2010-12-12
相关资源
最近更新 更多