1. ホーム
  2. python

[解決済み] matplotlib: RuntimeError: Python はフレームワークとしてインストールされていません

2022-01-31 13:57:38

質問

この質問は、以前にも こちら また こちら . しかし、私の場合、その解決策は問題を解決しませんでした。

元のエラーは、私がしようとすると import matplotlib.pyplot , と出ました。

トレースバック (最も最近の呼び出し): ファイル "", 行 1, in ファイル "/Users/XX/anaconda/lib/python2.7/site-packages/matplotlib/pyplot.py", 114 行目、in _backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup() ファイル "/Users/XX/anaconda/lib/python2.7/site-packages/matplotlib/backends/ イニット .py", 32行目、pylab_setupにあります。 globals(),locals(),[backend_name],0) ファイル "/Users/XX/anaconda/lib/python2.7/site-packages/matplotlib/backends/backend_macosx.py". 24 行目、で from matplotlib.backends import _macosx RuntimeError: Pythonはフレームワークとしてインストールされていません。Mac OS Xバックエンドは、以下のようにできません。 Python がフレームワークとしてインストールされていない場合、正しく機能しません。詳しくは Python のインストールに関する詳細は、Python のドキュメントを参照してください。 のフレームワークを使用しています。Pythonをフレームワークとして再インストールしてください。 または、他のバックエンドを試してみてください。Matplotlibで作業している場合 仮想環境での作業については、「仮想環境でのMatplotlibの作業」を参照してください。 Matplotlib FAQ の「環境」を参照してください。

解決策に従って ~/.matplotlib/matplotlibrc ファイルにコードを記述します。 backend: TkAgg . そうしたら、エラーが変わりました。

/Users/XX/anaconda/lib/python2.7/site-packages/matplotlib/font_manager.py:273: UserWarning: Matplotlib は fc-list を使ってフォントキャッシュを構築しています。これは warnings.warn('Matplotlib is building font キャッシュはfc-listを使用しています。これは少し時間がかかるかもしれません') objc[25120]: クラス TKApplicationは、以下の両方に実装されています。 /Users/XX/anaconda/lib/libtk8.5.dylib および /System/Library/Frameworks/Tk.framework/Versions/8.5/Tk. どちらか一方 が使用されます。どちらが使われるかは未定義です objc[25120]: クラス TKMenu は は、/Users/XX/anaconda/lib/libtk8.5.dylib と /System/Library/Frameworks/Tk.framework/Versions/8.5/Tk. どちらか一方 が使用されます。どちらが使われるかは未定義です。クラス TKContentViewは、以下の両方に実装されています。 /Users/XX/anaconda/lib/libtk8.5.dylib および /System/Library/Frameworks/Tk.framework/Versions/8.5/Tk. どちらか一方 が使用されます。どちらが使われるかは未定義です objc[25120]: クラス TKWindow は、/Users/XX/anaconda/lib/libtk8.5.dylib の両方に実装されています。 /System/Library/Frameworks/Tk.framework/Versions/8.5/Tk. どちらか一方 が使用されます。どちらが使われるかは未定義です。

どうすれば直るのか見当もつきません。仮想マシンを使っているわけではありません。助けていただけませんか?ありがとうございます。

追記:追加することでわかりました。

matplotlibをインポートする
matplotlib.use('TkAgg')

以前 import matplotlib.pyplot であれば、うまくいくようです。でも、毎回この2行のコードを追加するのは面倒だな...。どなたか、何が起こっているのか、どうすれば直せるのかご存知の方はいらっしゃいませんか?ありがとうございます。

解決方法は?

virtualenvでスクリプトを実行しています。Pythonのバージョンは3.5です。

行を追加します。

backend: TkAgg

をファイルの中に入れてください。

~/.matplotlib/matplotlibrc

これで問題は解決しました。

なぜこれを追加すると問題が解決するのか、もっと詳しく知りたい方は、以下の記事をご覧ください。 matplotlibのバックエンドをカスタマイズする . そして TkAgg は、Tkinterに依存しているため、この問題を解決します。