Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ipython笔记本电脑的matplotlib和libpng问题_Python_Matplotlib_Ipython_Libpng_Ipython Notebook - Fatal编程技术网

ipython笔记本电脑的matplotlib和libpng问题

ipython笔记本电脑的matplotlib和libpng问题,python,matplotlib,ipython,libpng,ipython-notebook,Python,Matplotlib,Ipython,Libpng,Ipython Notebook,我试着用ipython笔记本。我安装了所有依赖项库。但是,在ipython控制台中启动ipython或“savefig”函数时,我不能使用“-pylab=inline”选项。当我尝试执行这两种操作时,由于执行matplotlib,返回了一条错误消息“RuntimeError:无法创建写入结构”。此外,notebookApp提示符中的一条警告称“libpng警告:应用程序使用libpng-1.2.41构建,但使用1.5.13运行” 但是,我安装了最新的libpng(1.5.13),用pip uni

我试着用ipython笔记本。我安装了所有依赖项库。但是,在ipython控制台中启动ipython或“savefig”函数时,我不能使用“-pylab=inline”选项。当我尝试执行这两种操作时,由于执行matplotlib,返回了一条错误消息“RuntimeError:无法创建写入结构”。此外,notebookApp提示符中的一条警告称“libpng警告:应用程序使用libpng-1.2.41构建,但使用1.5.13运行”

但是,我安装了最新的libpng(1.5.13),用pip uninstall卸载了matplotlib,用pip install重新安装了matplotlib(在构建过程中,我可以看到libpng1.5.13用于构建matplotlib)

我的系统的配置是Mac OS X10.6,python2.7。有没有人有类似的经历或一些建议

以下是回溯错误:

[<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
[]
---------------------------------------------------------------------------
运行时错误回溯(上次最近调用)
/show中的opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/IPython/zmq/pylab/backend_inline.pyc(关闭)
100次尝试:
101用于Gcf中的图形管理器。获取所有图形管理器()
-->102发送\u图(图\u manager.canvas.figure)
103最后:
104显示。_至_绘制=[]
/发送图中的opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/IPython/zmq/pylab/backend_inline.pyc(图)
209     """
210 fmt=InlineBackend.instance().图\u格式
-->211数据=打印图(图,fmt)
212#打印#如果没有要绘制的内容,则图形将返回无:
213如果数据为无:
/打印图中的opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/IPython/core/pylabtools.pyc(图,fmt)
102尝试:
103字节_io=BytesIO()
-->104图画布打印图(字节io,格式=fmt,bbox英寸=紧密)
105数据=字节\ io.getvalue()
106.最后:
/打印图中的opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/backend_base.pyc(self、filename、dpi、facecolor、edgecolor、orientation、format、**kwargs)
2050方向=方向,
2051干运行=真,
->2052**夸尔格)
2053渲染器=自身图。\u缓存渲染器
2054 bbox_inches=self.figure.get_tightbox(渲染器)
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/backends/backend_agg.pyc in print_png(self、filename_或_obj、*args、**kwargs)
501 _png.write_png(renderer._renderer.buffer_rgba(),
502 renderer.width,renderer.height,
-->503文件名(self.figure.dpi)
504最后:
505如果关闭:
运行时错误:无法创建写入结构
非常感谢


Jie

可能是在运行时加载了错误的libpng。如果您针对libpng 1.5构建了matplotlib,请确保您也使用它运行。libpng 1.2和1.5不兼容

在shell中,可以设置DYLD_LIBRARY_PATH以更改链接器首先搜索库的位置

otool -L /<somepath>/matplotlib/_png.so
otool-L//matplotlib/\u png.so

应该告诉您matplotlib在运行时发现了什么。

我有过几乎完全相同的经历:

  • 与中的“RuntimeError:无法创建写入结构”完全相同 伊皮顿笔记本
  • 完全相同的“libpng警告:已构建应用程序” 使用libpng-1.2.41,但使用1.5.13“
  • 相同操作系统:Mac OS X10.6
  • py33 ipython@0.13.1_0+笔记本+并行(来自MacPorts)
  • python3.3(来自MacPorts)取代了python2.7(我只看到了您的不同之处)
我认为IPython的MacPorts配方在某些操作系统版本中可能存在一些问题


我不确定python2.7是从哪里来的,但我的解决方案是,我最终放弃了MacPorts,转而支持(这也有一些问题,但我能够通过直接从源代码安装一些包来解决,请参阅).

我也有这个问题。另一个解决方案是将笔记本渲染图像的格式从“png”更改为“svg”。这可以在您的计算机中完成。我的计算机位于:

~/.ipython/profile_default/ipython_notebook_config.py
有一条线看起来像这样

# c.InlineBackend.figure_format = 'png'
取消注释并更改为“svg”对我来说很有用:

c.InlineBackend.figure_format = 'svg'

我在OS X Mavericks上也遇到了同样的问题,它通过自制程序安装了libpng,也安装了XQuartz。事实证明,matplotlib在编译时找到的是较旧的XQuartz libpng版本,但在运行时找到的是较新的自制libpng

我找到的最佳解决方案是:卸载matplotlib,临时重命名XQuartz libpng头,使其无法找到,安装matplotlib,然后更改头名称

全文如下:

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

在Anaconda环境中工作时,我尝试在Jupyter笔记本中查看OpenCV中的图像时也遇到了同样的问题。强制重新安装matplotlib对我有效:

pip install -U --force-reinstall matplotlib
我在查看Matt的解决方案时发现了这种方法。

对我来说

%matplotlib inline

在所有matplotlib导入解决此问题之前

LD_LIBRARY_路径设置可能是您的问题。matplotlib使用的另一个库可能是1.2.41版本的实际版本。此外,您是否可以编辑帖子并复制粘贴完整回溯?我使用了export LD_LIBRARY_路径=“/opt/local/$LD_LIBRARY_路径”(/opt/local/是我找到libpng15的地方),它没有任何区别。这不应该是
LD_LIBRARY_PATH=/opt/local/lib:$LD_LIBRARY_PATH
?但我怀疑你的问题也可能在其他地方。你能从IPython之外的matplotlib保存png吗?例如,从一个简单的脚本或从默认的Python提示符保存png吗?很好