141
votes

"UserWarning: Matplotlib utilise actuellement agg, qui est un backend non-GUI, donc ne peut pas afficher la figure." lors du traçage de la figure avec pyplot sur Pycharm

J'essaie de tracer un graphique simple en utilisant pyplot, par exemple:

Collecting tkinter
  Could not find a version that satisfies the requirement tkinter (from versions: )
No matching distribution found for tkinter

mais le chiffre n'apparaît pas et j'obtiens le message suivant:

ModuleNotFoundError: No module named 'tkinter'

J'ai vu à plusieurs endroits qu'il fallait changer la configuration de matplotlib en utilisant ce qui suit:

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

J'ai fait cela, mais j'ai ensuite reçu un message d'erreur car il ne trouve pas de module:

UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure.

Ensuite, j'ai essayé d'installer "tkinter" en utilisant pip install tkinter (dans l'environnement virtuel), mais il ne le trouve pas:

import matplotlib.pyplot as plt
plt.plot([1,2,3],[5,7,4])
plt.show()

Je dois également mentionner que j'exécute tout cela sur l'EDI Pycharm Community Edition en utilisant un environnement virtuel, et que mon système d'exploitation est Linux / Ubuntu 18.04.

Je voudrais savoir comment je peux résoudre ce problème afin de pouvoir afficher le graphique.


9 commentaires

Oubliez le graphique un instant. Votre problème est d'installer tkinter. Avez-vous essayé l'une des solutions disponibles à cela, par exemple stackoverflow.com/questions/4783810/install-tkinter-for-pyth‌ sur ?


Utilisez-vous réellement tkinter pour quoi que ce soit, ou l'avez-vous simplement choisi comme backend plt?


@ImportanceOfBeingErnest: Merci pour l'indice. Je vais en effet me concentrer sur l'installation de tkinter en premier. Je vais jeter un œil au lien que vous avez fourni et voir si je peux en tirer quelque chose.


@ G.Anderson: Je n'avais aucune idée de ce qu'était tkinter avant de rencontrer cette erreur avec matplotlib. Maintenant, j'essaie de l'installer juste pour pouvoir afficher des graphiques (donc oui, je suppose que je viens de le choisir comme backend plt). Si vous connaissez un autre moyen (c'est-à-dire sans utiliser tkinter), je serais heureux de l'entendre.


Vous pouvez utiliser un certain nombre de backends . Voici une réponse sur le cyclisme via les backends jusqu'à ce que vous en trouviez un qui fonctionne avec votre installation


@ImportanceOfBeingErnest: Merci beaucoup pour votre aide. J'ai installé tkinter dans le terminal bash en utilisant apt-get install python3-tk (à partir du lien que vous m'avez envoyé) et cela semble avoir fonctionné, car je peux maintenant afficher des graphiques. De plus, je n'ai pas besoin d'importer tkinter dans mon script.


@ G.Anderson: J'ai exécuté le script pour parcourir les différents backends. Il s'avère que seul TkAgg est disponible! En effet, je venais de l'installer avant de tester le script.


Les versions modernes de matplotlib passeront automatiquement en revue les boîtes à outils disponibles; donc si tkinter n'est pas installé (et aucune des autres options ne l'est), il reviendra au backend agg .


Sur Arch Linux, pacman -S --needed python-pyqt5 résolu le problème.


14 Réponses :


8
votes

Essayez d' import tkinter car pycharm a déjà installé tkinter pour vous, j'ai regardé Installer tkinter pour Python

Vous pouvez peut-être essayer:

import tkinter
import matplotlib
matplotlib.use('TkAgg')
plt.plot([1,2,3],[5,7,4])
plt.show()

comme moyen d'installation de tkinter

J'ai essayé votre chemin, il semble qu'aucune erreur ne se produise sur mon ordinateur, cela montre avec succès le chiffre. peut-être parce que pycharm a tkinter comme paquet système, vous n'avez donc pas besoin de l'installer. Mais si vous ne trouvez pas tkinter à l'intérieur, vous pouvez aller sur Tkdocs pour voir la façon d'installer tkinter, comme il le mentionne, tkinter est un package de base pour python.


1 commentaires

Merci pour votre suggestion. Malheureusement, cela ne fonctionne pas ( ModuleNotFoundError: No module named 'tkinter' ). J'essaierai d'installer tkinter d'une autre manière.



205
votes

J'ai trouvé une solution à mon problème (grâce à l'aide de ImportanceOfBeingErnest ).

Tout ce que j'avais à faire était d'installer tkinter via le terminal bash Linux en utilisant la commande suivante:

sudo apt-get install python3-tk

au lieu de l'installer avec pip ou directement dans l'environnement virtuel de Pycharm.


4 commentaires

En fait, j'ai aussi réalisé que depuis que j'ai installé tkinter, je n'ai plus besoin d'ajouter les deux premières lignes de mon code ( import matplotlib et matplotlib.use('TkAgg') )


Par python3-matplotlib-tk exhaustivité, sous OpenSuse Leap, le package que j'ai dû installer s'appelle python3-matplotlib-tk .


Cette réponse pourrait probablement mentionner que tkinter est spécifique à la version de python dans le sens où cette commande particulière installera tkinter exclusivement pour votre version par défaut de python. Supposons que vous ayez différentes installations de versions de python pour divers environnements virtuels. Dans ce cas, vous devrez l'installer pour la version python souhaitée utilisée dans ce venv fonctionnel. Par exemple, dans mon cas: sudo apt-get install python3.7-tk . Ne sachant pas cela, j'ai eu du mal à obtenir des erreurs «tkinter» de nom de module, même après l'avoir installé pour ma version globale de python.


J'ai dû installer un terminal Linux Bash sur mon PC pour exécuter cette commande. Et ça a marché! Voir howtogeek.com/249966/...



43
votes

Dans mon cas, le message d'erreur impliquait que je travaillais dans une console sans tête. Donc plt.show() ne pouvait pas fonctionner. Ce qui fonctionnait, c'était d'appeler plt.savefig :

import matplotlib.pyplot as plt

plt.plot([1,2,3], [5,7,4])
plt.savefig("mygraph.png")

J'ai trouvé la réponse sur un référentiel github .


0 commentaires

16
votes

Si vous utilisez Arch Linux (distributions comme Manjaro ou Antegros ) tapez simplement:

sudo pacman -S tk

Et tout fonctionnera parfaitement!


1 commentaires

Merci. Je cherchais ça.



7
votes

J'ai aussi eu ce problème dans PyCharm. Ce problème est dû au fait que vous n'avez pas de module tkinter dans votre machine.

Pour installer, suivez les étapes ci-dessous (sélectionnez votre système d'exploitation approprié)

Pour les utilisateurs d'ubuntu

 sudo yum install python3-tkinter

ou

 sudo yum install python-tkinter

Pour les utilisateurs Centos

 sudo apt-get install python3-tk

ou

 sudo apt-get install python-tk

Pour Windows, utilisez pip pour installer tk

Après avoir installé tkinter, redémarrez votre Pycharm et exécutez votre code, cela fonctionnera


0 commentaires

0
votes

Linux Mint 19. M'a aidé:

sudo apt install tk-dev

PS Recompile l'interpréteur python après l'installation du package.


0 commentaires

0
votes

Juste au cas où cela aiderait quelqu'un.

Version Python: plate-forme 3.7.7: Ubuntu 18.04.4 LTS

Ceci est venu avec la version 3.6.9 par défaut de python, mais j'avais installé ma propre version 3.7.7 python dessus (installé en le construisant à partir des sources)

tkinter ne fonctionnait pas même lorsque l' help('module') affiche tkinter dans la liste.

Les étapes suivantes ont fonctionné pour moi:

  1. sudo apt-get install tk-dev.

reconstruisez le python: 1. Accédez à votre dossier python et exécutez les vérifications:

python3.7 -m tkinter
  1. Construisez en utilisant la commande make: sudo make -j 8 --- ici 8 sont le nombre de processeurs, vérifiez le vôtre en utilisant la commande nproc .
  2. Installation en utilisant:

    sudo make altinstall
    

N'utilisez pas sudo make install, cela écrasera la version 3.6.9 par défaut, qui pourrait être compliquée plus tard.

  1. Vérifiez tkinter maintenant
    cd Python-3.7.7
    sudo ./configure --enable-optimizations
    

Une fenêtre apparaîtra, votre tkinter est prêt maintenant.


0 commentaires

0
votes

Après avoir mis à jour de nombreux packages ( Spyder 3 vers 4, Keras et Tensorflow et beaucoup de leurs dépendances), j'ai eu le même problème aujourd'hui! Je ne peux pas comprendre ce qui s'est passé; mais l'environnement virtuel (basé sur conda) qui continuait à utiliser Spyder 3 n'avait pas le problème. Bien que l'installation de tkinter ou la modification du backend, via matplotlib.use('TkAgg) comme indiqué ci-dessus, ou ce joli post sur la façon de changer le backend , pourrait bien résoudre le problème, je ne vois pas cela comme des solutions rigides. Pour moi, désinstaller matplotlib et le réinstaller était magique et le problème a été résolu.

pip install matplotlib

... puis installez

pip uninstall matplotlib

De tout ce qui précède, cela pourrait être un problème de gestion de paquet, et BTW, j'utilise à la fois conda et pip , chaque fois que c'est possible.


0 commentaires

0
votes

Lorsque j'ai rencontré cette erreur sur Spyder, je suis passé de l'exécution de mon code ligne par ligne à la mise en évidence de mon bloc de code de traçage et à l'exécution de tout cela en même temps. Voila, l'image est apparue.


0 commentaires

1
votes

Vous pouvez changer le matplotlib en utilisant le backend en utilisant de agg à Tkinter TKAgg utilisant la commande

matplotlib.use('TKAgg',warn=False, force=True)


1 commentaires

Cela a été très utile car je n'ai pas eu à recharger ma console ipython interactive lol. Merci



6
votes

Installation simple

pip3 install PyQt5==5.9.2

Ça marche pour moi.


2 commentaires

Ouais, ça marche! Je l'ai installé dans mon environnement virtuel via le terminal de PyCharm.


J'exécute "pip3 install PyQt5" sans spécifier le numéro de version.



1
votes

J'ai ajouté % matplotlib en ligne et mon tracé est apparu dans Jupyter Notebook.


0 commentaires

0
votes

Le commentaire de @xicocaio doit être mis en évidence.

tkinter est spécifique à la version de python dans le sens où sudo apt-get install python3-tk installera tkinter exclusivement pour votre version par défaut de python. Supposons que vous ayez différentes versions de python dans divers environnements virtuels, vous devrez installer tkinter pour la version python souhaitée utilisée dans cet environnement virtuel. Par exemple, sudo apt-get install python3.7-tk . Ne pas faire cela entraînera toujours No module named ' tkinter' erreurs No module named ' tkinter' , même après l'avoir installé pour la version globale de python.


0 commentaires

1
votes

Cela a fonctionné avec R réticulé. Trouvé ici .

1: matplotlib.use( 'tkagg' ) ou 2: matplotlib$use( 'tkagg' )

Par exemple:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import style

import matplotlib
matplotlib.use( 'tkagg' )


style.use("ggplot")
from sklearn import svm

x = [1, 5, 1.5, 8, 1, 9]
y = [2, 8, 1.8, 8, 0.6, 11]

plt.scatter(x,y)
plt.show()


0 commentaires