Je travaille avec flask dans un environnement virtuel. J'ai pu installer matplotlib avec pip et je peux import matplotlib
dans une Python session. Cependant, lorsque je l’importe en tant que
matplotlib.pyplot as plt
Je reçois 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 en tant que framework. N'existe-t-il pas déjà? Que signifie "installer Python en tant que framework" et comment puis-je l'installer?
Cette solution a fonctionné pour moi. Si vous avez déjà installé matplotlib en utilisant pip sur votre environnement virtuel, vous pouvez simplement taper les éléments suivants:
$ cd ~/.matplotlib
$ nano matplotlibrc
Et ensuite, écrivez backend: TkAgg
dedans. Si vous avez besoin de plus d'informations, cliquez simplement sur le lien de la solution.
J'ai la même erreur et j'ai essayé la réponse de Jonathan
:
Vous pouvez résoudre ce problème en utilisant le backend Agg
Aller à
User/yourname/.matplotlib
et ouvrez/créezmatplotlibrc
et ajoutez la ligne suivantebackend : Agg
et cela devrait fonctionner pour vous.
Je lance le programme, pas d'erreur, mais aussi pas de tracé, et j'ai essayé backend: Qt4Agg
, il est indiqué que je n’ai pas installé PyQt4.
Puis j'ai essayé un autre backend: backend: TkAgg
, Ça marche!
Alors peut-être que nous pouvons essayer différents systèmes et que certains peuvent fonctionner ou installer les paquets requis tels que PyQt4.
Voici un exemple python 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 lorsque j'ai utilisé pip pour installer matplotlib. Par défaut, il a 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 bien lorsque j'ai importé matplotlib.pyplot. J'ai donc installé la version précédente de matplotlib à l'aide des éléments suivants:
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 contournement, mais cela a fonctionné pour moi en tant que solution à court terme.
Si vous ne voulez pas définir un .matplotib/matplotlibrc
fichier de configuration, vous pouvez contourner ce problème en définissant le paramètre 'Agg'
backend au moment de 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 résoudre ce problème en utilisant le backend Agg
Aller à User/yourname/.matplotlib
et ouvrez/créez matplotlibrc
et ajoutez la ligne suivante backend : Agg
et cela devrait fonctionner pour vous.
Une solution simple et propre consiste à créer un noyau qui définit PYTHONHOME
sur VIRTUAL_ENV
et utilise ensuite le système Python exécutable (au lieu de celui de virtualenv).
Si vous souhaitez automatiser la création d'un tel noyau, vous pouvez utiliser le script jupyter-virtualenv-osx .
Bien que la plupart des réponses semblent indiquer que le script activate
doit être corrigé pour utiliser le python système, je ne parvenais pas à le faire fonctionner et une solution simple pour moi - bien qu'un peu dégoûtante - consistait à installer matplotlib dans l'environnement global. et l'utiliser à la place d'une instance virtualenv. Vous pouvez le faire soit en créant votre virtualenv avec l’indicateur --system-site-packages tel que virtualenv --system-site-packages foo
, ou d’utiliser le drapeau universel lors de l’installation de pip comme pip install -U matplotlib
.