我使用this guide来安装"科学堆栈" for Python(OSX 10.9.2,brewed Python 2.7.6,IPython 2.0,matplotlib 1.3.1,libpng 1.6.10)。一切都很好看。
然而,试图在--pylab=inline
的IPython笔记本环境中运行一个简单的情节给我这个错误:
/usr/local/Cellar/python/2.7.6/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/IPython/core/formatters.py:239: FormatterWarning: Exception in image/png formatter: Could not create write struct
FormatterWarning,
在终端中它说:libpng warning: Application built with libpng-1.5.17 but running with 1.6.10
据我所知,我没有安装其他libpng。我尝试从libpng
删除以/usr/local/
开头的所有文件并重新安装所有内容,但无济于事。构建matplotlib(pip install matplotlib
)的输出包含:
BUILDING MATPLOTLIB
matplotlib: yes [1.3.1]
python: yes [2.7.6 (default, Mar 16 2014, 15:04:47) [GCC
4.2.1 Compatible Apple LLVM 5.1 (clang-503.0.38)]]
platform: yes [darwin]
REQUIRED DEPENDENCIES AND EXTENSIONS
numpy: yes [version 1.8.1]
dateutil: yes [using dateutil version 2.2]
tornado: yes [using tornado version 3.2]
pyparsing: yes [using pyparsing version 2.0.1]
pycxx: yes [Couldn't import. Using local copy.]
libagg: yes [pkg-config information for 'libagg' could not
be found. Using local copy.]
freetype: yes [version 17.2.11]
png: yes [version 1.6.10]
OPTIONAL SUBPACKAGES
sample_data: yes [installing]
toolkits: yes [installing]
tests: yes [using nose version 1.3.1]
OPTIONAL BACKEND EXTENSIONS
macosx: yes [installing, darwin]
qt4agg: yes [installing, Qt: 4.8.6, PyQt4: 4.10.4]
gtk3agg: no [Requires pygobject to be installed.]
gtk3cairo: no [Requires cairo to be installed.]
gtkagg: no [Requires pygtk]
tkagg: yes [installing, version 81008]
wxagg: no [requires wxPython]
gtk: no [Requires pygtk]
agg: yes [installing]
cairo: no [cairo not found]
windowing: no [Microsoft Windows only]
OPTIONAL LATEX DEPENDENCIES
dvipng: no
ghostscript: no
latex: no
pdftops: no
所以在我看来matplotlib应该针对libpng 1.6.10进行编译?有人可以帮我弄清楚发生了什么吗?
答案 0 :(得分:22)
@ glenn-randers-pehrson提供答案的扩展:
pip uninstall matplotlib
cd /opt/X11/include/libpng15
mv png.h _png.h
mv pngconf.h _pngconf.h
mv pnglibconf.h _pnglibconf.h
pip install matplotlib
(if needed remove the old directory or use the force option)
(now move the .h files back to their original locations)
答案 1 :(得分:14)
查找以" png"开头的旧标头文件(png.h,pngconf.h,或许其他人)并删除它们。
答案 2 :(得分:8)
为了记录(从以上评论开始):
删除X11
launchctl unload /Library/LaunchAgents/org.macosforge.xquartz.startx.plist
sudo launchctl unload /Library/LaunchDaemons/org.macosforge.xquartz.privileged_startx.plist
sudo rm -rf /opt/X11* /Library/Launch*/org.macosforge.xquartz.* /Applications/Utilities/XQuartz.app /etc/*paths.d/*XQuartz
sudo pkgutil --forget org.macosforge.xquartz.pkg
然后,
如果安装了matplotlib / python,请根据需要运行以下命令:
pip uninstall matplotlib
pip uninstall ipython
然后,
pip install matplotlib
pip install ipython
如有必要,可以从https://www.macupdate.com/app/mac/26593/xquartz重新安装XQuartz。
[注意:这会重新添加/opt/X11/include/libpng15/png.h等文件,但之后ipython工作正常。]
答案 3 :(得分:0)
虽然 有多个libpng副本有点荒谬,但这个问题是由pip编译器和python的路径不同引起的。您也可以通过路径解决此问题,然后重新编译,但上述解决方案也可以。