pyenvとvirtualenvで環境構築した時にmatplotlib.pyplotが使えなかった時の対処法

  • 61
    いいね
  • 1
    コメント
この記事は最終更新日から1年以上が経過しています。

はじめに

こういった問題は環境によって対処できない場合があるので,あくまで一例だと思ってください.

環境

MacOSX Yosemite

pyenvとvirtualenv

仮想環境を構築する便利なものです.
使い方等は過去記事参照:pyenvとvirtualenvで環境構築

エラー

$ pyenv install 3.5.1
$ pyenv virtualenv 3.5.1 mpl35
$ pyenv activate mlp35
$ pip install matplotlib numpy scipy
$ python -c "import matplotlib.pyplot"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/Users/kodairatomonori/.pyenv/versions/mpl35/lib/python3.5/site-packages/matplotlib/pyplot.py", line 114, in <module>
    _backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup()
  File "/Users/kodairatomonori/.pyenv/versions/mpl35/lib/python3.5/site-packages/matplotlib/backends/__init__.py", line 32, in pylab_setup
    globals(),locals(),[backend_name],0)
  File "/Users/kodairatomonori/.pyenv/versions/mpl35/lib/python3.5/site-packages/matplotlib/backends/backend_macosx.py", line 24, in <module>
    from matplotlib.backends import _macosx
RuntimeError: 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 Working with Matplotlib in a virtual enviroment see 'Working with Matplotlib in Virtual environments' in the Matplotlib FAQ

こんな感じでエラーがでてしまう...

解決できた方法

virtualenv環境でPILとmatplotlibをインストールしようとしたら盛大にドハマりした件

これみると,backendってところを変更すればいいはず

matplotlibrcの38行目の
backend : macosx
これを
backend : Tkagg
と変更させると解決できた!

matplotlibrcの場所は,

$python -c "import matplotlib;print(matplotlib.matplotlib_fname())"

で確認できます.

探した際に見たサイト

最終的にはこのサイトを見て解決:virtualenv環境でPILとmatplotlibをインストールしようとしたら盛大にドハマりした件

matplotlib公式:Working with Matplotlib in Virtual environments
matplotlib公式:Customizing matplotlib
pyenv-virtualenvのissuespyenv virtualenv not work for matplotlib #140