erreur matplotlib - aucun module nommé tkinter


195

J'ai essayé d'utiliser le package matplotlib via Pycharm IDE sur Windows 10. lorsque j'exécute ce code:

from matplotlib import pyplot

J'obtiens l'erreur suivante:

ImportError: No module named 'tkinter'

Je sais qu'en python 2.x, il s'appelait Tkinter, mais ce n'est pas le problème - je viens d'installer un tout nouveau python 3.5.1.

EDIT: en plus, j'ai également essayé d'importer 'tkinter' et 'Tkinter' - aucun de ces deux n'a fonctionné (les deux ont renvoyé le message d'erreur que j'ai mentionné).


Avez-vous importé tkinter par import Tkinterou import tkinter?
Avión

1
oui, j'ai oublié de mentionner que ... a reçu le même message d'erreur
noamgot

ImportError: No module named '_tkinter', please install the python3-tk package?
knh170

@ knh170 non, simplement le message affiché dans mon message d'origine.
noamgot

4
ressemble à une installation personnalisée .Réexécutez le programme d'installation de python, appuyez sur Modifier, puis cochez td / tk et IDLE
omilus

Réponses:


221
sudo apt-get install python3-tk

Ensuite,

>> import tkinter # all fine

Modifier :

Pour Windows, je pense que le problème est que vous n'avez pas installé le package Python complet. Puisque Tkinter doit être livré avec Python hors de la boîte. Voir: http://www.tkdocs.com/tutorial/install.html

Je suggère d'installer ipython , qui fournit également un shell puissant et les packages nécessaires.


ÇA FONCTIONNE! Merci! (J'ai installé anaconda via le lien que vous avez mis dans votre message)
noamgot

3
si vous êtes sur une boîte CentOS, la commande estsudo yum install python36u-tkinter.x86_64
n1c9

J'utilise pycharm et j'ai la même erreur concernant le paquet manquant. Après avoir installé le paquet tkinter, matplotlib a bien fonctionné. Merci @ knh170
debaonline4u

A travaillé pour moi avec Ubuntu 18.04 en utilisant python3 dans venv. Il suffit de l'installer: sudo apt-get install python3-tk Ensuite, vous pouvez tester est à partir du shell python3: de matplotlib import pyplot
serfer2

1
@ knh170 Pouvons-nous installer tkinter en utilisant pip? Je ne peux rien rechercher à ce sujet
Scott Yang

99

vous pouvez utiliser

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

si vous ne voulez pas du tout utiliser tkinter.

N'oubliez pas non plus d'utiliser %matplotlib inlineen haut de votre ordinateur portable si vous en utilisez un.

EDIT: aggest un backend différent comme tkinterpour matplotlib.


1
C'est bien, car en raison de mon travail avec un serveur, je n'ai pas besoin et je n'ai pas X11, mais certains programmes que j'ai installés dépendent de matplotlib.
rien333

2
Fantastique! Au cas où quelqu'un se demanderait comment cela fonctionne
Matt

2
cette solution ne fonctionne pas si vous voulez tracer quelque chose
Beyhan Gül

5
Juste pour ajouter à cette réponse: aggest un backend non-GUI, donc plt.show()n'aura aucun effet. Mais vous pouvez toujours faire plt.savefig(filename)et regarder le fichier pour un débogage rapide.
Nico

1
Cela me fait gagner du temps face à cette erreur tkinter.
ennuying_squid

35

Sur Centos, les noms de package et les commandes sont différents. Vous devrez faire:

sudo yum install tkinter

Pour résoudre le problème.


32

Pour les utilisateurs de Windows , il n'est pas nécessaire de télécharger à nouveau le programme d'installation. Faites ce qui suit:

  1. Allez dans le menu Démarrer, tapez Programmes et fonctionnalités ,
  2. Sélectionnez la version Python (pour moi c'est Python 3.6.5 (64 bits) ),
  3. Faites un clic droit, appuyez sur Modifier ,
  4. Cliquez sur Modifier ,
  5. Sélectionnez td / tk et IDLE (qui installe tkinter) et cliquez sur suivant .

Attendez l'installation et vous avez terminé.


4
Je vous remercie. C'est la réponse la plus utile et la plus correcte parmi d'autres. (Pour les utilisateurs du système d'exploitation Windows bien sûr)
Ruslan K.

20

Presque toutes les réponses que j'ai recherchées pour ce problème indiquent que Python sur Windows est livré avec tkinter et tcl déjà installés, et je n'ai pas eu la chance d'essayer de les télécharger ou de les installer à l'aide du site pip ou actviestate.com. J'ai finalement découvert que lorsque j'installais python à l'aide du programme d'installation binaire, j'avais décoché le module lié à TCL et tkinter. J'ai donc exécuté à nouveau le programme d'installation binaire et j'ai choisi de modifier ma version python en sélectionnant cette option. Pas besoin de faire quoi que ce soit manuellement alors. Si vous accédez à votre terminal python, les commandes suivantes devraient vous montrer la version de tkinter installée avec votre Python:

import tkinter
import _tkinter
tkinter._test()

1
Correct. Une installation Windows est le seul système où cela peut arriver - comme ce fut le cas pour moi. +1. Cela vaut certainement la peine d'être noté pour les utilisateurs avec des installations Windows.
marcushobson

18

Si vous utilisez fedora, installez d'abord tkinter

sudo dnf install python3-tkinter

Je ne pense pas que vous ayez besoin d'importer tkinter par la suite, je vous suggère également d'utiliser virtualenv

$ python3 -m venv myvenv
$ source myvenv/bin/activate

Et ajoutez les packages nécessaires à l'aide de pip


10

Sur CentOS 7 et Python 3.4, la commande est sudo yum install python34-tkinter

Sur Redhat 7.4 avec Python 3.6, la commande est sudo yum install rh-python36-python-tkinter


3
Sur Centos 7 et Python 3.6, la commande estsudo yum install python36u-tkinter.x86_64
Rob Hall

8

Pour les utilisateurs de Windows, réexécutez le programme d'installation. Sélectionnez Modifier. Cochez la case tcl / tk et IDLE. La description de ceci dit "Installe tkinter"


8

Sur Ubuntu, début 2018, il n'y a pas de python3.6-tkdistributions normales d'ubuntu (xenial / 16.04), donc même si vous avez des versions antérieures de python-tkcela ne fonctionnera pas.

Ma solution était d'utiliser tout mettre en place avec python 3.5:

 sudo apt install python3.5-tk
 virtualenv --python=`which python3.5` python-env
 source python-env/bin/activate
 pip install -r requirements.txt

Et maintenant matplotlibpeut trouver tkinter.

MODIFIER :

J'avais juste besoin de 3,6 après tout, et le truc était de:

sudo apt install tk-dev

puis reconstruisez python3.6, après tk-dev , par exemple:

./configure
make
make install

3
Mise à jour: Maintenant , il EST un python3.6-tk! sudo apt install python3.6-tktravaille ici :)
Luis

4

Si vous utilisez python 3.6, cela a fonctionné pour moi:

sudo apt-get install python3.6-tk

au lieu de

sudo apt-get install python3-tk

Qui fonctionne pour les autres versions de python3


4
Je n'ai pas de paquet python3.6-tk sur ubuntu 16.04.
Brooks

@brooks, même ici
Free Url

N'existait pas non plus sur Centos
Rob Hall

Il devrait être disponible maintenant sur ubuntu 16.04
Yu-Lin Chen

3

Pour les pauvres comme moi qui utilisent python 3.7 . Vous avez besoin du python3.7-tkpackage.

sudo apt install python3.7-tk

$ python
Python 3.7.4 (default, Sep  2 2019, 20:44:09)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tkinter
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'tkinter'
>>> exit()

Remarque. python3-tkest installé. Mais non python3.7-tk.

$ sudo apt install python3.7-tk
Reading package lists... Done
Building dependency tree
Reading state information... Done
Suggested packages:
  tix python3.7-tk-dbg
The following NEW packages will be installed:
  python3.7-tk
0 upgraded, 1 newly installed, 0 to remove and 34 not upgraded.
Need to get 143 kB of archives.
After this operation, 534 kB of additional disk space will be used.
Get:1 http://ppa.launchpad.net/deadsnakes/ppa/ubuntu xenial/main amd64 python3.7-tk amd64 3.7.4-1+xenial2 [143
kB]
Fetched 143 kB in 0s (364 kB/s)
Selecting previously unselected package python3.7-tk:amd64.
(Reading database ... 256375 files and directories currently installed.)
Preparing to unpack .../python3.7-tk_3.7.4-1+xenial2_amd64.deb ...
Unpacking python3.7-tk:amd64 (3.7.4-1+xenial2) ...
Setting up python3.7-tk:amd64 (3.7.4-1+xenial2) ...

Après l'avoir installé, tout va bien.

$ python3
Python 3.7.4 (default, Sep  2 2019, 20:44:09)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tkinter
>>> exit()

2

Sur CentOS 6.5 avec python 2.7, je devais faire: yum install python27-tkinter


1
Je reçois "Aucun paquet python27-tkinter disponible."
proutray

2

Parfois (par exemple dans la distribution osgeo4w) tkinter est supprimé.

Essayez de changer le fichier matplotlibrc d' édition du backend matplotlibrc situé en [python install dir]/matplotlib/mpl-data/matplotlibrcchangeant le paramètre backend de backend: TkAggà quelque chose d'autre comme backend: Qt4Aggdécrit ici: http://matplotlib.org/faq/usage_faq.html#what-is-a-backend


1

Depuis que j'utilise Python 3.7 sur Ubuntu, j'ai dû utiliser:

sudo apt-get install python3.7-tk

0

Peut-être avez-vous installé python à partir des sources. Dans ce cas, vous pouvez recompiler python avec tcl / tk pris en charge.

  1. Complétez et installez tcl / tk depuis http://www.tcl.tk/software/tcltk/download.html , je suppose que vous avez installé python sur /home/xxx/local/tcl-tk/.
# install tcl
wget -c https://prdownloads.sourceforge.net/tcl/tcl8.6.9-src.tar.gz
tar -xvzf tcl8.6.9-src.tar.gz
cd tcl8.6.9
./configure --prefix=/home/xxx/local/tcl-tk/
make
make install

# install tk
wget -c https://prdownloads.sourceforge.net/tcl/tk8.6.9.1-src.tar.gz
tar -xvzf tk8.6.9.1-src.tar.gz
cd tk8.6.9.1
./configure --prefix=/home/xxx/local/tcl-tk/
make
make install
  1. Recompilez python avec tcl / tk pris en charge, par exemple:
# download the source code of python and decompress it first.

cd <your-python-src-dir>
./configure --prefix=/home/xxx/local/python \
 --with-tcltk-includes=/home/xxx/local/tcl-tk/include \
 --with-tcltk-libs=/home/xxx/local/tcl-tk/lib
make 
make install

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.