web-dev-qa-db-fra.com

matplotlib: RuntimeError: Python n'est pas installé en tant que framework

Cette question a déjà été posée dans ici , aussi ici . Cependant, la solution n'a pas résolu le problème pour mon cas. 

L'erreur d'origine est, quand j'essaie de import matplotlib.pyplot, j'ai:

Traceback (appel le plus récent en dernier): Fichier "", ligne 1, dans Fichier "/Users/XX/anaconda/lib/python2.7/site-packages/matplotlib/pyplot.py", ligne 114, in _backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup () Fichier "/Users/XX/anaconda/lib/python2.7/site-packages/matplotlib/backends/init .py", ligne 32, dans pylab_setup globals (), locals (), [nom_du_fichier], 0) Fichier "/Users/XX/anaconda/lib/python2.7/site-packages/matplotlib/backends/backend_macosx.py", ligne 24, in from matplotlib.backends import _macosx RuntimeError: Python n'est pas installé en tant que cadre. Le backend Mac OS X ne pourra pas fonctionner correctement si Python n’est pas installé en tant que framework. Voir le Documentation Python pour plus d'informations sur l'installation de Python en tant que sur Mac OS X. Veuillez réinstaller Python en tant que structure, ou essayez l'un des autres backends. Si vous travaillez avec Matplotlib dans un environnement virtuel, voir 'Utilisation de Matplotlib dans Virtual environnements dans la FAQ de Matplotlib

J'ai suivi les solutions pour ajouter un fichier ~/.matplotlib/matplotlibrc avec le code: backend: TkAgg. Après cela, mon erreur s'est transformée en:

/Users/XX/anaconda/lib/python2.7/site-packages/matplotlib/font_manager.py:273: UserWarning: Matplotlib construit le cache de polices en utilisant fc-list. Ce peut prendre un moment. warnings.warn ('Matplotlib construit la police cache en utilisant fc-list. Cela peut prendre un moment.') objc [25120]: Class TKApplication est implémenté dans les deux /Users/XX/anaconda/lib/libtk8.5.dylib et /System/Library/Frameworks/Tk.framework/Versions/8.5/Tk. Un de deux seront utilisés. Lequel n'est pas défini. objc [25120]: La classe TKMenu est implémenté dans /Users/XX/anaconda/lib/libtk8.5.dylib et /System/Library/Frameworks/Tk.framework/Versions/8.5/Tk. Un de deux seront utilisés. Lequel n'est pas défini. objc [25120]: Classe TKContentView est implémenté dans les deux /Users/XX/anaconda/lib/libtk8.5.dylib et /System/Library/Frameworks/Tk.framework/Versions/8.5/Tk. Un de deux seront utilisés. Lequel n'est pas défini. objc [25120]: Classe TKWindow est implémenté dans /Users/XX/anaconda/lib/libtk8.5.dylib et /System/Library/Frameworks/Tk.framework/Versions/8.5/Tk. Un de deux seront utilisés. Lequel n'est pas défini.

Je ne sais pas comment résoudre ce problème. Je n'utilise pas de machine virtuelle. Pourriez-vous m'aider? Je vous remercie! 

PS: J'ai découvert cela en ajoutant: 

importer matplotlib
matplotlib.use ('TkAgg')

avant import matplotlib.pyplot, cela semble fonctionner. Mais ajouter ces deux lignes de codes à chaque fois est ennuyant ... Est-ce que quelqu'un sait ce qui se passe et comment je peux y remédier? Je vous remercie! 

27
KDD

Je lance mon script dans virtualenv. La version Python est 3.5.

Ajouter une ligne:

backend: TkAgg

dans le fichier:

~/.matplotlib/matplotlibrc

Cela a résolu le problème.

57
Joney

Ci-dessous a travaillé pour moi:

import matplotlib  
matplotlib.use('TkAgg')   
import matplotlib.pyplot as plt  

Référence: https://github.com/tensorflow/tensorflow/issues/2375

27
Sibish

J'ai installé Jupyter Notebook dans virtualenv et ci-dessous a fonctionné pour moi:

À la console:

echo "backend: TkAgg" >> ~/.matplotlib/matplotlibrc
pip install matplotlib==2.1.0

Sur le cahier:

import matplotlib

Redémarrez le noyau:

dataframe.plot.hist()
...

À mon avis, cela corrigera l'erreur.

3
hakan

J'ai eu les mêmes problèmes avec python 2.7 dans virtualenv et j'ai réussi à les résoudre en descendant simplement matplotlib vers la version 2.1.0.

1

J'avais aussi la même erreur. Ce que j’ai fait est d’installer les paquets miniconda en utilisant le pythonw. L'application Python était déjà installée sur mon mac. L'installation est aussi simple que de casser un œuf. Bash le fichier .sh dans le terminal.

0
Abin Jo Abraham