Impossible d '" importer matplotlib.pyplot comme plt" dans le virtualenv
je travaille avec flasque dans un environnement virtuel. J'ai pu installer matplotlib avec pip, et je peux import matplotlib
dans une session Python. Cependant, quand je l'importe comme
matplotlib.pyplot as plt
j'obtiens l'erreur suivante:
>>> import matplotlib.pyplot as plt
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "//anaconda/envs/myenv/lib/python2.7/site-packages/matplotlib/pyplot.py", line 109, in <module>
_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 <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.
Je ne comprends pas pourquoi il me demande d'installer Python comme framework. N'est-ce pas existe déjà? Que signifie "installer Python comme framework", et comment l'installer?
7 réponses
Ce solution a fonctionné pour moi. Si vous avez déjà installé matplotlib en utilisant pip sur votre environnement virtuel, vous pouvez simplement taper ce qui suit:
$ cd ~/.matplotlib
$ nano matplotlibrc
et ensuite, écrivez backend: TkAgg
là-dedans.
Si vous avez besoin de plus d'informations, allez simplement sur le lien solution.
j'ai eu la même erreur, et j'ai essayé Jonathan
's réponse:
vous pouvez corriger ce problème en utilisant le backend Agg
Aller à
User/yourname/.matplotlib
et ouvrir/créermatplotlibrc
et ajouter la ligne suivantebackend : Agg
et cela devrait fonctionner pour vous.
j'exécute le programme, pas d'erreur, mais aussi pas de tracés, et j'ai essayé backend: Qt4Agg
,
il ressort que je N'ai pas installé PyQt4.
puis j'ai essayé un autre backend: backend: TkAgg
, ça marche!
donc peut-être que nous pouvons essayer les sauvegardes de difference et que certaines peuvent fonctionner ou installer les paquets requis comme PyQt4.
voici un échantillon de Python snippet que vous pouvez essayer et tester matplotlib.
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
plt.plot([1, 2, 3], [0, 3, 7])
plt.show()
j'ai eu le même problème quand j'ai utilisé pip pour installer matplotlib. Par défaut, il installé la dernière version 1.5.0. Cependant, j'avais un autre environnement virtuel avec Python 3.4 et matplotlib 1.4.3 et cet environnement fonctionnait très bien lorsque j'ai importé matplotlib.pyplot. Par conséquent, j'ai installé la version précédente de matplotlib en utilisant ce qui suit:
cd path_to_virtual_environment # assume directory is called env3
env3/bin/pip install matplotlib==1.4.3
je sais que ce n'est qu'une solution de rechange, mais ça a fonctionné pour moi comme solution à court terme.
si vous ne voulez pas configurer un fichier de configuration .matplotib/matplotlibrc
, vous pouvez contourner ce problème en paramétrant le 'Agg'
à l'exécution juste après l'importation de matplotlib
et avant l'importation de 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]: [<matplotlib.lines.Line2D at 0x1057ecf10>]
In [9=]: fig.savefig('myplot.png')
vous pouvez corriger ce problème en utilisant le backend Agg
Aller à User/yourname/.matplotlib
et ouvrir/créer matplotlibrc
et ajouter la ligne suivante backend : Agg
et cela devrait fonctionner pour vous.
bien que la plupart des réponses semblent pointer vers la correction du script activate
pour utiliser le système python, j'avais du mal à obtenir que cela fonctionne et une solution facile pour moi - bien qu'un peu cringey - était d'installer matplotlib à l'environnement global et de l'utiliser au lieu d'une instance virtualenv. Vous pouvez le faire soit en créant votre virtualenv avec l'option --system-site-packages comme virtualenv --system-site-packages foo
, soit en utilisant l'Option universal flag lors de l'installation de pip comme pip install -U matplotlib
.
une solution propre et facile consiste à créer un noyau qui positionne PYTHONHOME
à VIRTUAL_ENV
et utilise ensuite l'exécutable Python système (au lieu de celui du virtualenv).
si vous voulez automatiser la création d'un tel noyau, vous pouvez utiliser le script jupyter-virtualenv-osx .