channa ly channa ly - 1 year ago 80
Python Question

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/ in <module>()
113 from matplotlib.backends import pylab_setup
--> 114 _backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup()

/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)
34 # Things we pull in from all backends

/Users/ilab/.pyenv/versions/2.7.11/envs/mlcoursera/lib/python2.7/site-packages/matplotlib/backends/ in <module>()
23 import matplotlib
---> 24 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.

Can anyone help me to get this to work?

ps: I am on python 2.7.1 with pyenv.

Answer Source

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>