Search code examples
pythonmatplotlibpyenv

Can not import matplotlib with pyenv ipython notebook


I am a ruby developer and I've started learning python for a project. I installed pyenv, pyenv virutualenv, ipython, notebook, matplotlib. Everything worked fine except the part I called

import matplotlib.pyplot as plot

Then I 've got this error from notebook:

---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
<ipython-input-1-08ad587cbf6a> in <module>()
----> 1 import matplotlib.pyplot as plot

/Users/ilab/.pyenv/versions/2.7.11/envs/mlcoursera/lib/python2.7/site-packages/matplotlib/pyplot.py in <module>()
112 
113 from matplotlib.backends import pylab_setup
--> 114 _backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup()
115 
116 _IP_REGISTERED = None

/Users/ilab/.pyenv/versions/2.7.11/envs/mlcoursera/lib/python2.7/site-packages/matplotlib/backends/__init__.pyc in pylab_setup()
 30     # imports. 0 means only perform absolute imports.
 31     backend_mod = __import__(backend_name,
---> 32                              globals(),locals(),[backend_name],0)
 33 
 34     # Things we pull in from all backends

/Users/ilab/.pyenv/versions/2.7.11/envs/mlcoursera/lib/python2.7/site-packages/matplotlib/backends/backend_macosx.py in <module>()
 22 
 23 import matplotlib
---> 24 from matplotlib.backends import _macosx
 25 
 26 

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.

Can anyone help me to get this to work?

ps: I am on python 2.7.1 with pyenv.


Solution

  • Matplotlib expects a Framework install on OS X in order to manipulate GUI elements. You can install Framework versions with a command like this knowing your python version and your environment name :

    env PYTHON_CONFIGURE_OPTS="--enable-framework CC=clang" pyenv virtualenv <python_version> <env_name>