导入matplotlib.pyplot时出现ImportError: dlopen(…)无法加载libpng15.15.dylib库。

23

我知道这个问题之前已经有人问过了。我按照那里的答案所给的指示操作,但是并没有解决我的问题(而且我没有足够的声望来在那个帖子中发表评论)。无论如何,以下是发生的情况:

我尝试执行:

import matplotlib.pyplot

作为回报,我得到:

Traceback (most recent call last):
  File "/Users/russellrichie/anaconda/lib/python2.7/site-packages/IPython/core/interactiveshell.py", line 3032, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-3-eff513f636fd>", line 1, in <module>
    import matplotlib.pyplot as plt
  File "/Users/russellrichie/anaconda/lib/python2.7/site-packages/matplotlib/pyplot.py", line 27, in <module>
    import matplotlib.colorbar
  File "/Users/russellrichie/anaconda/lib/python2.7/site-packages/matplotlib/colorbar.py", line 34, in <module>
    import matplotlib.collections as collections
  File "/Users/russellrichie/anaconda/lib/python2.7/site-packages/matplotlib/collections.py", line 27, in <module>
    import matplotlib.backend_bases as backend_bases
  File "/Users/russellrichie/anaconda/lib/python2.7/site-packages/matplotlib/backend_bases.py", line 56, in <module>
    import matplotlib.textpath as textpath
  File "/Users/russellrichie/anaconda/lib/python2.7/site-packages/matplotlib/textpath.py", line 22, in <module>
    from matplotlib.mathtext import MathTextParser
  File "/Users/russellrichie/anaconda/lib/python2.7/site-packages/matplotlib/mathtext.py", line 63, in <module>
    import matplotlib._png as _png
ImportError: dlopen(/Users/russellrichie/anaconda/lib/python2.7/site-packages/matplotlib/_png.so, 2): Library not loaded: libpng15.15.dylib
  Referenced from: /Users/russellrichie/anaconda/lib/python2.7/site-packages/matplotlib/_png.so
  Reason: image not found

我的Python版本:

2.7.7 |Anaconda 2.0.1 (x86_64)| (default, Jun  2 2014, 12:48:16) [GCC 4.0.1 (Apple Inc. build 5493)]

编辑:

cel的建议奏效了!我刚刚尝试了“conda remove matplotlib”,“pip install matplotlib”,然后是“conda install matplotlib”,咔嚓!天哪,你们不知道这个问题困扰了我多久。感谢你们所有人。


8
你是如何安装 matplotlib 的?尝试用 conda remove matplotlibpip uninstall matplotlib 卸载它,然后再尝试使用 conda install matplotlib 解决这个问题。 - cel
1
被点赞了,希望其他人也会这样做,这样你就可以获得声望,在另一个提到的帖子中进行询问/评论。 - l'L'l
3
在重新安装 matplotlib 之前,我尝试了删除和重新安装 matplotlib,但并没有起作用。直到我先重新安装了 libpng (brew unlink libpng 然后 brew install libpng) ,然后再执行 conda remove matplotlibconda install matplotlib,这样 %matplotlib inline 就不再生成任何错误了。 - Alexis Perrier
1
@AlexPerrier Homebrew有一种完全不同的安装Python包的方式,他们遵循PEP 0453准则,即将PIP作为所有Python实现(包括来自下游分发商的实现)的默认软件包安装程序,并使PIP可用作Python的默认软件包管理器。 - AMR
1
@AMR,感谢您的通知。我决定在答案中整理一些关于这个问题的信息。当我发表评论时,我并没有想到这个问题会变得如此受欢迎。 - cel
显示剩余2条评论
3个回答

21

有些 Python 包与本地 C 库动态链接。在更新其中一个库后,链接可能会中断并给出有关缺少动态库的奇怪错误消息,如问题中的错误消息所示。

基本上,在更新本地库后,有时也必须重新构建 Python 包(此处为 matplotlib)。

总的来说,以上陈述是正确的。如果您使用 conda 作为 Python 发行版,事情通常不会太复杂:

对于扩展包,conda 还维护所需的 C 库。只要您仅使用 conda installconda update 安装这些包,就不应遇到这些问题。

对于 numpyscipymatplotlib 等许多包,建议首先尝试 conda search <library name>,看看是否有符合您需要的 conda 配方。对于大多数用户而言,conda install <library name> 将比 pip install 更好。

为确保只安装了 conda 的版本,可以执行以下操作:

conda remove matplotlib
pip uninstall matplotlib
conda install matplotlib

之后这个问题不应再出现。


2

我也遇到了这个问题。我更新了Anaconda-Navigator,下次打开一个使用matplotlib.pyplot的项目时,我遇到了类似的问题。对我有用的是:

conda install libpng

1
我曾经遇到过这个问题,但是原因是我设置了
export DYLD_LIBRARY_PATH="/Users/charlesmartin14/anaconda/lib":$DYLD_LIBRARY_PATH
删除此设置并重新启动 shell 即可解决问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接