0

Matplotlib が Ubuntu の PyQt で動作するかどうかをテストしようとしています。私は PyQt を使用しており、Pyqt に Matplotlib を埋め込みたいと考えています。http://eli.thegreenplace.net/2009/01/20/matplotlib-with-pyqt-guis/にあるコードに従いましたが、matplotlib.

from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
  File "/usr/lib/pymodules/python2.6/matplotlib/backends/backend_qt4agg.py", line 9, in <module>
    from matplotlib.figure import Figure
  File "/usr/lib/pymodules/python2.6/matplotlib/figure.py", line 18, in <module>
    from axes import Axes, SubplotBase, subplot_class_factory
  File "/usr/lib/pymodules/python2.6/matplotlib/axes.py", line 2, in <module>
    import math, sys, warnings, datetime, new
  File "/home/kasa/Desktop/new.py", line 25, in <module>
    from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
ImportError: cannot import name FigureCanvasQTAgg

ターミナルからこれらのインポート コマンドを実行すると、正常に動作します。誰かが私のインストールの何が問題なのかを理解できますか?

4

1 に答える 1

4

トレースバックを読んでください。

FigureCanvasQTAggからインポートしようとしましたbackend_qt4agg:

from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas

Figureからインポートしようとしましたfigure:

  File "/usr/lib/pymodules/python2.6/matplotlib/backends/backend_qt4agg.py", line 9, in <module>
    from matplotlib.figure import Figure

からいくつかのものをインポートしようとしましたaxes:

  File "/usr/lib/pymodules/python2.6/matplotlib/figure.py", line 18, in <module>
    from axes import Axes, SubplotBase, subplot_class_factory

いくつかのモジュールもインポートします。最後の 1 つに注意してくださいnew

  File "/usr/lib/pymodules/python2.6/matplotlib/axes.py", line 2, in <module>
    import math, sys, warnings, datetime, new

そして、それはどこでそれを探しますか? 組み込みモジュールの代わりに、

  File "/home/kasa/Desktop/new.py", line 25, in <module>

これはあなたのファイルだと思いますが、再び戻ります:

    from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas

FigureCanvasQTAggPython は、循環インポート地獄にいるため、インポートできないことを認識し、エラーが発生します。

ImportError: cannot import name FigureCanvasQTAgg

簡単に言えば

ファイルは組み込みnewモジュールをマスクします。解決策は簡単です: ファイルの名前を変更します (また、フォルダーから削除しnew.pycます)。

于 2012-06-30T06:40:41.300 に答える