1

matplotlib が python3 に正しくインストールされているかどうかをテストしようとしています。私はこの基本的なチュートリアルに従っています: http://www.scipy.org/Plotting_Tutorial

この質問は以前に尋ねられたものと似ていますが、残念ながら最終的な解決策を明示的に報告しておらず、これは別のオペレーティング システムです。

このオペレーティング システムは Mac OS X 10.6.8 です。Python 3.2 でスクリプトを実行しても機能しませんが、Python 2.7 で実行すると機能します。残念ながら、3.2 が必要です。

savefig 行をコメントアウトすると、正常に動作します。

"""
Example: simple line plot.
Show how to make and save a simple line plot with labels, title and grid
"""
import numpy
import pylab

t = numpy.arange(0.0, 1.0+0.01, 0.01)
s = numpy.cos(2*2*numpy.pi*t)
pylab.plot(t, s)

pylab.xlabel('time (s)')
pylab.ylabel('voltage (mV)')
pylab.title('About as simple as it gets, folks')
pylab.grid(True)
pylab.savefig('/Users/USERNAME/Documents/simple_plot.png', format='png')

pylab.show()

上記のコードは、パスが明示的に設定されているかどうかに関係なく、同じエラーを返しました。上記に加えて、次のことを試しました。

pylab.savefig('simple_plot.png', format='png')
pylab.savefig('simple_plot')

他の質問が言ったように(上記の長い例のように)パスを明示的に設定しようとしましたが、次のエラーが発生しました。注: mplex.py はスクリプトの名前です。

libpng warning: Application was compiled with png.h from libpng-1.2.44
libpng warning: Application  is  running with png.c from libpng-1.4.11
libpng warning: Incompatible libpng version in application and library
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "mplex.py", line 16, in <module>
pylab.savefig('/Users/USERNAME/Documents/simple_plot.png', format='png')
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/matplotlib/pyplot.py", line 474, in savefig
return fig.savefig(*args, **kwargs)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/matplotlib/figure.py", line 1225, in savefig
self.canvas.print_figure(*args, **kwargs)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/matplotlib/backend_bases.py", line 2075, in print_figure
**kwargs)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/matplotlib/backend_bases.py", line 1846, in print_png
return agg.print_png(*args, **kwargs)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/matplotlib/backends/backend_agg.py", line 497, in print_png
filename_or_obj, self.figure.dpi)
RuntimeError: Could not create write struct

アイデア?savefig 行で試したこと以外に、宛先を明示的に設定する別の方法はありますか?

4

2 に答える 2

5

使用しているパッケージマネージャーがわかりません。Python2.7(3.2.3ではありません)を使用していますが、Finkを使用しており、同様の問題が発生しました(libpngのバージョン番号が異なります)。

iPython --pylabで、私はこれを見ていました:

In [3]: savefig('foo.png')
libpng warning: Application  is  running with png.c from libpng-1.4.11
libpng warning: Incompatible libpng version in application and library
libpng warning: Application was compiled with png.h from libpng-1.5.11

libpngのFinkインストールを確認すると、次のことがわかりました。

$ fink list libpng
Information about 6268 packages read in 0 seconds.
 i   libpng14             1.4.11-1        PNG image format handling library
 i   libpng14-shlibs      1.4.11-1        Shared libraries for libpng14 package
     libpng15             1.5.10-1        PNG image format handling library
     libpng15-32bit       1.5.10-1        PNG library (32-bit)
     libpng15-32bit-shli  1.5.10-1        Shared libraries for libpng15 package
 i   libpng15-shlibs      1.5.10-1        Shared libraries for libpng15 package
     libpng3              1:1.2.49-1      PNG image format handling library
     libpng3-shlibs       1:1.2.49-1      Shared libraries for libpng3 package
 i   system-pkgconfig-li  1.5.11-1        [virtual pkgconfig package representing libpng]
 i   system-pkgconfig-li  1.5.11-1        [virtual pkgconfig package representing libpng15]

「finkinstalllibpng15」を実行した後、私のlibpngパッケージのバージョンは次のようになりました。

$ fink list libpng
Information about 6268 packages read in 1 seconds.
     libpng14             1.4.11-1        PNG image format handling library
 i   libpng14-shlibs      1.4.11-1        Shared libraries for libpng14 package
 i   libpng15             1.5.10-1        PNG image format handling library
     libpng15-32bit       1.5.10-1        PNG library (32-bit)
     libpng15-32bit-shli  1.5.10-1        Shared libraries for libpng15 package
 i   libpng15-shlibs      1.5.10-1        Shared libraries for libpng15 package
     libpng3              1:1.2.49-1      PNG image format handling library
     libpng3-shlibs       1:1.2.49-1      Shared libraries for libpng3 package
 i   system-pkgconfig-li  1.5.11-1        [virtual pkgconfig package representing libpng]
 i   system-pkgconfig-li  1.5.11-1        [virtual pkgconfig package representing libpng15]

ご覧のとおり、libpng14はインストールされておらず、libpng15がインストールされています。

次に、「pipuninstallmatplotlib」と「pipinstallmatplotlib」は、次のようなmatplotlibビルドの概要を生成します。

$ pip install matplotlib
Downloading/unpacking matplotlib
  Downloading matplotlib-1.2.0.tar.gz (36.9Mb): 36.9Mb downloaded
  Running setup.py egg_info for package matplotlib
    basedirlist is: ['/usr/local/', '/usr', '/usr/X11', '/opt/local']
    ============================================================================
    BUILDING MATPLOTLIB
                matplotlib: 1.2.0
                    python: 2.7.3 (default, Jul 27 2012, 16:40:57)  [GCC 4.2.1
                            Compatible Apple Clang 3.1
                            (tags/Apple/clang-318.0.61)]
                  platform: darwin

    REQUIRED DEPENDENCIES
                     numpy: 1.6.2
                 freetype2: 15.0.9

    OPTIONAL BACKEND DEPENDENCIES
                    libpng: 1.5.10
                   Tkinter: Tkinter: 81008, Tk: 8.5, Tcl: 8.5
                      Gtk+: no
                            * Building for Gtk+ requires pygtk; you must be able
                            * to "import gtk" in your build/install environment
           Mac OS X native: yes
                        Qt: no
                       Qt4: no
                    PySide: no
                     Cairo: no

    OPTIONAL DATE/TIMEZONE DEPENDENCIES
                  dateutil: 1.5
                      pytz: 2012b

    OPTIONAL USETEX DEPENDENCIES
                    dvipng: no
               ghostscript: 9.05
                     latex: no    

ビルドがlibpng1.5.10を取得することがわかります。以前は、ビルド用に1.4.11を取得していました。

于 2012-11-12T20:16:43.807 に答える
-2

標準コンソールの使用を避けると、yourcode.pyまたはyourcode.pywファイルをダブルクリックしてもエラーは表示されません。

于 2013-01-12T08:53:09.990 に答える