matplotlib-Fehler - kein Modul namens tkinter


194

Ich habe versucht, das matplotlib-Paket über Pycharm IDE unter Windows 10 zu verwenden, als ich diesen Code ausführte:

from matplotlib import pyplot

Ich erhalte folgende Fehlermeldung:

ImportError: No module named 'tkinter'

Ich weiß, dass es in Python 2.x Tkinter hieß, aber das ist nicht das Problem - ich habe gerade eine brandneue Python 3.5.1 installiert.

BEARBEITEN: Außerdem habe ich versucht, 'tkinter' und 'Tkinter' zu importieren - beides hat nicht funktioniert (beide haben die von mir erwähnte Fehlermeldung zurückgegeben).


Haben Sie tkinter von import Tkinteroder importiert import tkinter?
Avión

1
Ja,
ich habe

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

@ knh170 nein, einfach die Nachricht in meinem ursprünglichen Beitrag gezeigt.
Noamgot

4
Es sieht so aus, als hätten Sie eine benutzerdefinierte Installation verwendet. Führen Sie das Python-Installationsprogramm erneut aus, drücken Sie Ändern und aktivieren
Sie

Antworten:


221
sudo apt-get install python3-tk

Dann,

>> import tkinter # all fine

Bearbeiten :

Ich denke, das Problem für Windows ist, dass Sie nicht das vollständige Python-Paket installiert haben. Da Tkinter mit Python ausgeliefert werden sollte. Sehen: http://www.tkdocs.com/tutorial/install.html

Ich schlage vor, ipython zu installieren , das eine leistungsstarke Shell und die erforderlichen Pakete bietet.


ES FUNKTIONIERT! Vielen Dank! (Ich habe Anaconda über den Link installiert, den Sie in Ihren Beitrag
eingefügt haben

3
Wenn Sie sich auf einer CentOS-Box befinden, lautet der Befehlsudo yum install python36u-tkinter.x86_64
n1c9

Ich benutze pycharm und habe den gleichen Fehler bezüglich fehlendem Paket erhalten. Nach der Installation des tkinter-Pakets funktionierte matplotlib einwandfrei. Vielen Dank, dass Sie @ knh170
debaonline4u

Arbeitete für mich mit Ubuntu 18.04 mit Python3 in Venv. Einfach installieren: sudo apt-get install python3-tk Dann können Sie testen, ist von Python3-Shell: von Matplotlib importieren Pyplot
Serfer2

1
@ knh170 Können wir tkinter mit pip installieren? Ich kann nichts im Zusammenhang damit suchen
Scott Yang

99

Sie können verwenden

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

wenn Sie nicht verwenden möchten tkinter .

Vergessen Sie auch nicht zu verwenden %matplotlib inline oben auf Ihrem Notebook zu verwenden, wenn Sie eines verwenden.

EDIT: aggist ein anderes Backend wie tkinterfür matplotlib.


1
Das ist schön, denn aufgrund der Arbeit mit einem Server benötige ich kein X11, aber einige Programme, die ich installiert habe, sind von matplotlib abhängig.
Rien333

2
Fantastisch! Für den Fall, dass sich jemand fragt, wie das funktioniert
Matt

2
Diese Lösung funktioniert nicht, wenn Sie etwas planen möchten
Beyhan Gül

4
Nur um diese Antwort zu ergänzen: aggIst ein Backend ohne GUI, hat also plt.show()keine Auswirkungen. Sie können plt.savefig(filename)die Datei jedoch weiterhin zum schnellen Debuggen verwenden.
Nico

1
Spart mir Zeit beim Umgang mit diesem tkinter-Fehler.
annoying_squid

35

Unter Centos unterscheiden sich die Paketnamen und Befehle. Sie müssen Folgendes tun:

sudo yum install tkinter

Um das Problem zu lösen.


29

Für Windows- Benutzer muss das Installationsprogramm nicht erneut heruntergeladen werden. Gehen Sie einfach wie folgt vor:

  1. Gehen Sie zum Startmenü und geben Sie Programme und Funktionen ein .
  2. Wählen Sie die Python-Version (für mich ist es Python 3.6.5 (64-Bit) ),
  3. Klicken Sie mit der rechten Maustaste auf Ändern .
  4. Klicken Sie auf Ändern .
  5. Wählen td / tk und IDLE (die tkinter installiert) und klicken Sie auf nächste .

Warten Sie auf die Installation und Sie sind fertig.


4
Danke dir. Es ist unter anderem die nützlichste und richtigste Antwort. (Für Windows-Benutzer natürlich)
Ruslan K.

20

Fast alle Antworten, die ich nach diesem Problem gesucht habe, besagen, dass Python unter Windows bereits mit tkinter und tcl installiert ist und ich kein Glück hatte, sie über pip oder die Website actviestate.com herunterzuladen oder zu installieren. Ich stellte schließlich fest, dass ich bei der Installation von Python mit dem Binärinstallationsprogramm das Modul für TCL und tkinter deaktiviert hatte. Also habe ich das Binärinstallationsprogramm erneut ausgeführt und mich entschieden, meine Python-Version zu ändern, indem ich diese Option ausgewählt habe. Dann müssen Sie nichts mehr manuell tun. Wenn Sie zu Ihrem Python-Terminal gehen, sollten die folgenden Befehle die mit Ihrem Python installierte Version von tkinter anzeigen:

import tkinter
import _tkinter
tkinter._test()

1
Richtig. Eine Windows-Installation ist das einzige System, auf dem dies passieren kann - wie es bei mir der Fall war. +1. Dies ist sicherlich für Benutzer mit Windows-Installationen erwähnenswert.
Marcushobson

18

Wenn Sie Fedora verwenden, installieren Sie zuerst tkinter

sudo dnf install python3-tkinter

Ich glaube nicht, dass Sie tkinter danach importieren müssen. Ich empfehle Ihnen auch, virtualenv zu verwenden

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

Und fügen Sie die erforderlichen Pakete mit pip hinzu


10

Unter CentOS 7 und Python 3.4 lautet der Befehl sudo yum install python34-tkinter

Unter Redhat 7.4 mit Python 3.6 lautet der Befehl sudo yum install rh-python36-python-tkinter


3
Auf Centos 7 und Python 3.6 lautet der Befehlsudo yum install python36u-tkinter.x86_64
Rob Hall

8

Führen Sie für Windows-Benutzer das Installationsprogramm erneut aus. Wählen Sie Ändern. Aktivieren Sie das Kontrollkästchen für tcl / tk und IDLE. Die Beschreibung hierfür lautet "Installiert tkinter"


8

Unter Ubuntu, Anfang 2018, gibt es keine python3.6-tkNormalverteilungen von Ubuntu (xenial / 16.04). Selbst wenn Sie frühere Versionen python-tkdavon haben, funktioniert dies nicht.

Meine Lösung bestand darin, alles einzurichten mit 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

Und jetzt matplotlibkann finden tkinter.

EDIT :

Ich brauchte nur 3.6 und der Trick war:

sudo apt install tk-dev

und dann Python3.6 neu erstellen, nachdem tk-dev zB:

./configure
make
make install

3
Update: Jetzt gibt es IST ein python3.6-tk! sudo apt install python3.6-tkarbeitet hier :)
Luis

4

Wenn Sie Python 3.6 verwenden, hat dies bei mir funktioniert:

sudo apt-get install python3.6-tk

anstatt

sudo apt-get install python3-tk

Welches funktioniert für andere Versionen von Python3


4
Ich habe kein python3.6-tk-Paket unter Ubuntu 16.04.
Brooks

@brooks, hier gleich
Free Url

Auch existierte nicht auf Centos
Rob Hall

Es sollte jetzt am Ubuntu 16.04
Yu-Lin Chen

3

Für die Armen wie mich mit Python 3.7 . Sie benötigen das python3.7-tkPaket.

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()

Hinweis. python3-tkist installiert. Aber nicht 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) ...

Nach der Installation alles gut.

$ 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

Unter CentOS 6.5 mit Python 2.7 musste ich Folgendes tun: yum install python27-tkinter


1
Ich erhalte die Meldung "Kein Paket python27-tkinter verfügbar."
Proutray

2

Manchmal (zum Beispiel in der osgeo4w-Distribution) wird tkinter entfernt.

Versuchen Sie, die Matplotlib-Backend- Datei zu ändern, indem Sie die Matplotlibrc- Datei [python install dir]/matplotlib/mpl-data/matplotlibrcändern, die sich beim Ändern des Backend- Parameters von backend: TkAggeinem anderen wie backend: Qt4Aggdem hier beschriebenen befindet: http://matplotlib.org/faq/usage_faq.html#what-is-a-backend


1

Da ich Python 3.7 unter Ubuntu verwende, musste ich Folgendes verwenden:

sudo apt-get install python3.7-tk

0

Vielleicht haben Sie Python von der Quelle installiert. In diesem Fall können Sie Python mit Unterstützung von tcl / tk neu kompilieren.

  1. Schließen Sie tcl / tk von http://www.tcl.tk/software/tcltk/download.html ab und installieren Sie es. Ich nehme an, Sie haben Python unter installiert /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. Kompilieren Sie Python mit unterstütztem tcl / tk neu, zum Beispiel:
# 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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.