No se puede “importar matplotlib.pyplot as plt” en virtualenv

Estoy trabajando con matraz en un entorno virtual. Pude instalar matplotlib con pip, y puedo import matplotlib en una sesión de Python. Sin embargo, cuando lo importo como

 matplotlib.pyplot as plt 

Obtuve el siguiente error:

 >>> import matplotlib.pyplot as plt Traceback (most recent call last): File "", line 1, in  File "//anaconda/envs/myenv/lib/python2.7/site-packages/matplotlib/pyplot.py", line 109, in  _backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup() File "//anaconda/envs/myenv/lib/python2.7/site-packages/matplotlib/backends/__init__.py", line 32, in pylab_setup globals(),locals(),[backend_name],0) File "//anaconda/envs/myenv/lib/python2.7/site-packages/matplotlib/backends/backend_macosx.py", line 24, in  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. 

Estoy confundido acerca de por qué me pide que instale Python como marco. ¿No existe ya? ¿Qué significa “instalar Python como marco” y cómo lo instalo?

Esta solución funcionó para mí. Si ya instaló matplotlib usando pip en su entorno virtual, puede escribir lo siguiente:

 $ cd ~/.matplotlib $ nano matplotlibrc 

Y luego, escriba backend: TkAgg allí. Si necesita más información, simplemente vaya al enlace de la solución.

Recibí el mismo error y probé la respuesta de Jonathan :

Puede solucionar este problema utilizando el Agg de back-end

Vaya a User/yourname/.matplotlib y abra / cree matplotlibrc y agregue la siguiente línea de backend : Agg y debería funcionar para usted.

backend: Qt4Agg el progtwig, no hay error, pero tampoco hay plots, e intenté backend: Qt4Agg , se imprime que no tengo instalado PyQt4.

Luego probé con otro backend: backend: TkAgg , ¡funciona!

Entonces, tal vez podamos probar los backends diferenciados y algunos pueden funcionar o instalar paquetes requeired como PyQt4.

Aquí hay un fragmento de código de muestra que puede probar y probar matplotlib.

 import matplotlib matplotlib.use('TkAgg') import matplotlib.pyplot as plt plt.plot([1, 2, 3], [0, 3, 7]) plt.show() 

Tuve un problema similar cuando usé pip para instalar matplotlib. Por defecto, instaló la última versión que era 1.5.0. Sin embargo, tuve otro entorno virtual con Python 3.4 y matplotlib 1.4.3 y este entorno funcionó bien cuando importé matplotlib.pyplot. Por lo tanto, instalé la versión anterior de matplotlib usando lo siguiente:

 cd path_to_virtual_environment # assume directory is called env3 env3/bin/pip install matplotlib==1.4.3 

Sé que esto es solo una solución, pero funcionó para mí como una solución a corto plazo.

Si no desea establecer un archivo de configuración .matplotib/matplotlibrc , puede evitar este problema configurando el backend 'Agg' en tiempo de ejecución justo después de importar matplotlib y antes de importar matplotlib.pyplot :

 In [1]: import matplotlib In [2]: matplotlib.use('Agg') In [3]: import matplotlib.pyplot as plt In [4]: fig, ax = plt.subplots(1, 1) In [5]: import numpy as np In [6]: x = np.linspace(-1., 1.) In [7]: y = np.sin(x) In [8]: ax.plot(x, y) Out[8]: [] In [9=]: fig.savefig('myplot.png') 

introduzca la descripción de la imagen aquí

Puede solucionar este problema utilizando el Agg back-end

Vaya a User/yourname/.matplotlib y abra / cree matplotlibrc y agregue la siguiente línea de backend : Agg y debería funcionar para usted.

Aunque la mayoría de las respuestas parecen apuntar a parchear el script de activate para usar el sistema python, tuve problemas para que eso funcionara y una solución fácil para mí, aunque un poco cringey, fue instalar matplotlib en el entorno global y usar eso en lugar de una instancia virtualenv. Puede hacer esto creando su virtualenv con la marca –system-package-packages como virtualenv --system-site-packages foo , o usando la bandera universal cuando instale pip install -U matplotlib como pip install -U matplotlib .

Una solución limpia y fácil es crear un kernel que establezca PYTHONHOME en VIRTUAL_ENV y luego use el ejecutable Python del sistema (en lugar del que está en el virtualenv).

Si desea automatizar la creación de dicho núcleo, puede usar el script jupyter-virtualenv-osx .