LoginSignup
11
6

More than 5 years have passed since last update.

MatplotlibでRuntimeError,ImportErrorが出てきた時の対処法

Posted at

MatplotlibでRuntimeError,ImportErrorになった時の対処法


経緯

Pythonの学習を進めている途中で以下のようなエラーにぶち当たり、色々試行錯誤して理解しました。せっかくなのでそれを解決するに至ったストーリーをQiitaの練習がてら残します。。。

該当のコード

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0,10,0.1)
print(x)

y = 2 * x + 1
print(y)

plt.plot(x,y)
plt.show()

エラー

/Users/MYNAME/.pyenv/versions/anaconda3-5.1.0/envs/Pycharm_test/bin/python /Users/MYNAMEo/math_training/liner_function
Traceback (most recent call last):
  File "/Users/MYNAME/math_training/liner_function", line 3, in <module>
    import matplotlib.pyplot as plt
  File "/Users/MYNAME/.pyenv/versions/anaconda3-5.1.0/envs/Pycharm_test/lib/python3.6/site-packages/matplotlib/pyplot.py", line 2371, in <module>
    switch_backend(rcParams["backend"])
  File "/Users/MYNAME/.pyenv/versions/anaconda3-5.1.0/envs/Pycharm_test/lib/python3.6/site-packages/matplotlib/pyplot.py", line 207, in switch_backend
    backend_mod = importlib.import_module(backend_name)
  File "/Users/MYNAME/.pyenv/versions/anaconda3-5.1.0/envs/Pycharm_test/lib/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "/Users/MYNAME/.pyenv/versions/anaconda3-5.1.0/envs/Pycharm_test/lib/python3.6/site-packages/matplotlib/backends/backend_macosx.py", line 14, in <module>
    from matplotlib.backends import _macosx
ImportError: Python is not installed as a framework. The Mac OS X backend will not be able to function correctly if Python is not installed as a framework. See the Python documentation for more information on installing Python as a framework on Mac OS X. Please either reinstall Python as a framework, or try one of the other backends. If you are using (Ana)Conda please install python.app and replace the use of 'python' with 'pythonw'. See 'Working with Matplotlib on OSX' in the Matplotlib FAQ for more information.

何が起こっている?

てな感じで、まずはエラーコードをそのまま貼り付けて検索をかけました。するとスタックオーバーフローでそれっぽい記事が・・・python matplotlib framework under macosx?

要約すると

「backend」っていう設定が行える「設定ファイル(CONFIGURATION FILE)」なるものがあるらしい。。。その設定によっては今回のようなエラーが起こるそうな

backendはどうやって設定する?

この設定ファイルをあーせいこーせい言うブログがいくつか見つかったのですがそもそも「設定ファイル」がどこにあってどう操作するのかわかんないもんだから少々戸惑いましたが、

つまりこうするらしいです↓

1.まず設定ファイルの場所をpythonで以下の処理を行い発見する。

import matplotlib as mpl

print(mpl.get_configdir())
print(mpl.matplotlib_fname())

すると以下のような出力になるはず

~/matplotlib/mpl-data/matplotlibrc

なるほど!このmpl-dataってディレクトリに「設定ファイル(=matplotlibrc)」が入っているのですね!!!

2.ターミナルで設定ファイルを操作する。

1の出力結果を見ながらmpl-dataまでたどり着いたら、以下の操作

$ open matplotlibrc

すると、ついに設定ファイル(.txt)が姿を表します!
こんな感じ

### MATPLOTLIBRC FORMAT

# This is a sample matplotlib configuration file - you can find a copy
# of it on your system in
# site-packages/matplotlib/mpl-data/matplotlibrc.  If you edit it
# there, please note that it will be overwritten in your next install.
# If you want to keep a permanent local copy that will not be
# overwritten, place it in the following location:
# unix/linux:
#     $HOME/.config/matplotlib/matplotlibrc or
#     $XDG_CONFIG_HOME/matplotlib/matplotlibrc (if $XDG_CONFIG_HOME is set)
# other platforms:
#     $HOME/.matplotlib/matplotlibrc
#
# See http://matplotlib.org/users/customizing.html#the-matplotlibrc-file for
# more details on the paths which are checked for the configuration file.
#
# This file is best viewed in a editor which supports python mode
# syntax highlighting. Blank lines, or lines starting with a comment
# symbol, are ignored, as are trailing comments.  Other lines must
# have the format
#    key : val # optional comment
#
# Colors: for the color values below, you can either use - a
# matplotlib color string, such as r, k, or b - an rgb tuple, such as
# (1.0, 0.5, 0.0) - a hex string, such as ff00ff - a scalar
# grayscale intensity such as 0.75 - a legal html color name, e.g., red,
# blue, darkslategray

#### CONFIGURATION BEGINS HERE

# The default backend; one of GTK GTKAgg GTKCairo GTK3Agg GTK3Cairo
# MacOSX Qt4Agg Qt5Agg TkAgg WX WXAgg Agg Cairo GDK PS PDF SVG
# Template.
# You can also deploy your own backend outside of matplotlib by
# referring to the module name (which must be in the PYTHONPATH) as
# 'module://my_backend'.
backend      : なんちゃら

#まだまだ続く。。。

この最後の行の 
backend : なんちゃら
を、

backend : TkAgg

にしてあげる。保存して終わり。

11
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
6