matplotlib和libpng与ipython笔记本有关 [英] matplotlib and libpng issues with ipython notebook
问题描述
我试图使用ipython笔记本。我安装了所有依赖库。但是,在Ipython控制台中启动ipython或savefig功能时,我无法使用--pylab = inline选项。当我尝试执行其中任何一个时,由于执行matplotlib而返回错误消息RuntimeError:无法创建写入结构。此外,来自notebookApp提示的警告说libpng警告:使用libpng-1.2.41构建的应用程序,但以1.5.13运行。
I was trying to use ipython notebook . I installed all the dependency libraries. However, I cannot use either the "--pylab=inline" option when launching ipython or "savefig" function in the Ipython console. When I tried to do either of them, an error message was returned "RuntimeError: Could not create write struct" resulting from execution of matplotlib. Also, a warning from the notebookApp prompt said "libpng warning: Application built with libpng-1.2.41 but running with 1.5.13".
但是,我安装了最新的libpng(1.5.13),卸载了pp卸载的matplotlib并重新安装了pp install的matplotlib(在构建过程中,我可以看到libpng1.5.13用于构建matplotlib)。
However, I installed the newest libpng(1.5.13), uninstalled matplotlib with pip uninstall and reinstalled matplotlib with pip install (and during the build process, I can see that libpng1.5.13 is used for the building of matplotlib).
我的系统配置是Mac OS X10.6,python2.7。有人有类似的经历或一些建议?
The configuration for my system is Mac OS X10.6, python2.7. Anybody has similar experience or some suggestiongs?
以下是追溯错误:
[<matplotlib.lines.Line2D at 0x106066d50>]
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/IPython/zmq/pylab/backend_inline.pyc in show(close)
100 try:
101 for figure_manager in Gcf.get_all_fig_managers():
--> 102 send_figure(figure_manager.canvas.figure)
103 finally:
104 show._to_draw = []
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/IPython/zmq/pylab/backend_inline.pyc in send_figure(fig)
209 """
210 fmt = InlineBackend.instance().figure_format
--> 211 data = print_figure(fig, fmt)
212 # print_figure will return None if there's nothing to draw:
213 if data is None:
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/IPython/core/pylabtools.pyc in print_figure(fig, fmt)
102 try:
103 bytes_io = BytesIO()
--> 104 fig.canvas.print_figure(bytes_io, format=fmt, bbox_inches='tight')
105 data = bytes_io.getvalue()
106 finally:
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/backend_bases.pyc in print_figure(self, filename, dpi, facecolor, edgecolor, orientation, format, **kwargs)
2050 orientation=orientation,
2051 dryrun=True,
-> 2052 **kwargs)
2053 renderer = self.figure._cachedRenderer
2054 bbox_inches = self.figure.get_tightbbox(renderer)
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/backends/backend_agg.pyc in print_png(self, filename_or_obj, *args, **kwargs)
501 _png.write_png(renderer._renderer.buffer_rgba(),
502 renderer.width, renderer.height,
--> 503 filename_or_obj, self.figure.dpi)
504 finally:
505 if close:
RuntimeError: Could not create write struct
非常感谢,
杰
推荐答案
我在使用libpng的OS X Mavericks上遇到同样的问题通过自制软件安装并安装XQuartz。事实证明,matplotlib在编译时找到了旧的XQuartz libpng版本,但在运行时找到了更新的自制libpng。
I had this same problem on OS X Mavericks with libpng installed via homebrew and also XQuartz installed. It turned out matplotlib was finding the older XQuartz libpng version when compiling, but finding the more recent homebrew libpng at runtime.
我找到的最佳解决方案来自 jaengelberg在github上发表的评论:卸载matplotlib,暂时重命名XQuartz libpng标题,使它们不能成为找到,安装matplotlib,然后更改标题名称。
The best solution I've found is from this comment by jaengelberg on github: Uninstall matplotlib, temporarily rename the XQuartz libpng headers so they can't be found, install matplotlib, then change the header names back.
这里是完整的:
pip uninstall matplotlib
cd /opt/X11/include/libpng15
sudo mv png.h _png.h
sudo mv pngconf.h _pngconf.h
sudo mv pnglibconf.h _pnglibconf.h
pip install matplotlib
sudo mv _png.h png.h
sudo mv _pngconf.h pngconf.h
sudo mv _pnglibconf.h pnglibconf.h
这篇关于matplotlib和libpng与ipython笔记本有关的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!