12 votes

problèmes liés à matplotlib et libpng avec ipython notebook

J'ai essayé d'utiliser le bloc-notes ipython . J'ai installé toutes les bibliothèques nécessaires. Cependant, je ne peux pas utiliser l'option "--pylab=inline" lors du lancement d'ipython ou la fonction "savefig" dans la console Ipython. Lorsque j'ai essayé d'utiliser l'une ou l'autre de ces fonctions, un message d'erreur est apparu : "RuntimeError : Could not create write struct" résultant de l'exécution de matplotlib. De plus, un avertissement provenant de l'invite de notebookApp disait "libpng warning : Application construite avec libpng-1.2.41 mais fonctionnant avec 1.5.13".

Cependant, j'ai installé la dernière version de libpng (1.5.13), désinstallé matplotlib avec pip uninstall et réinstallé matplotlib avec pip install (et pendant le processus de construction, je peux voir que libpng1.5.13 est utilisé pour la construction de matplotlib).

La configuration de mon système est Mac OS X10.6, python2.7. Quelqu'un a une expérience similaire ou des suggestions ?

Voici les erreurs de traçage :

[<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

Merci beaucoup,

Jie

0voto

CopyrightX Points 256

J'ai vécu presque exactement la même expérience :

  • Exactement le même "RuntimeError : Impossible de créer une structure d'écriture" dans IPython Notebook
  • Exactement le même "libpng warning" : Application construite avec libpng-1.2.41 mais fonctionnant avec 1.5.13"
  • Même système d'exploitation : Mac OS X10.6
  • py33-ipython @0.13.1_0+notebook+parallel (de MacPorts)
  • python3.3 (de MacPorts) à la place de votre python2.7 (seule différence que je vois avec vous)

Je pense que la recette MacPorts pour IPython peut avoir quelques problèmes pour certaines versions du système d'exploitation.

Je ne sais pas d'où vous tenez votre python2.7, mais ma solution est que j'ai finalement abandonné MacPorts en faveur de maison (qui avait également quelques problèmes, mais que j'ai pu résoudre en installant certains paquets directement à partir des sources, voir cette question ).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X