Tkinter: "Python ist möglicherweise nicht für Tk konfiguriert"


74

Heute wollte ich mit Tkinter arbeiten, aber ich habe einige Probleme.

Python 3.2 (r32:88445, Mar 28 2011, 04:14:07) 
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from tkinter import *
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.2/tkinter/__init__.py", line 39, in <module>
import _tkinter # If this fails your Python may not be configured for Tk
ImportError: No module named _tkinter

Wie kann ich mein Python 3.2 für die Arbeit mit Tkinter konfigurieren?


1
Obwohl dies Ihre Frage nicht direkt beantwortet, würde die Verwendung vorkompilierter Binärdateien (wie ActivePython - einschließlich Tkinter) viel Zeit sparen, wenn Sie das neueste Python unter Linux verwenden möchten.
Sridhar Ratnakumar

2
Jede Linux-Distribution hat jemals ein offizielles Python-Paket. Es wird davon abgeraten, Binärdateien von Drittanbietern zu verwenden, es sei denn, Sie benötigen etwas Bestimmtes. Das heißt, Sie sind wahrscheinlich ein oder zwei Befehle von Tk-Unterstützung in Python, aber ich muss wissen, welche Linux-Variante Sie ausführen.
Mad Wombat

Antworten:


31

Laut http://wiki.python.org/moin/TkInter :

Wenn dies mit "Kein Modul mit dem Namen _tkinter" fehlschlägt, muss Ihre Python-Konfiguration so geändert werden, dass sie dieses Modul enthält (ein in C implementiertes Erweiterungsmodul). Bearbeiten Sie keine Module / Setups (es ist veraltet). Möglicherweise müssen Sie Tcl und Tk installieren (wenn Sie RPM verwenden, installieren Sie auch die RPMs -devel) und / oder das Skript setup.py bearbeiten, um auf die richtigen Speicherorte zu verweisen, an denen Tcl / Tk installiert ist. Wenn Sie Tcl / Tk an den Standardspeicherorten installieren, sollte durch einfaches erneutes Ausführen von "make" die Erweiterung _tkinter erstellt werden.


1
Wie bearbeiten Sie das Skript setup.py? Wie machst du es nochmal? Ich versuche dies auf einem Mac zu tun und finde, dass ich den Mac einfach zurückgeben und einen Windows-Computer bekommen sollte.
Drew Rush

3
In meinem Fall wurde dies durch ein Upgrade von verursacht tk. Es wurde nur von verwendet matplotlibund kann umrundet werden: stackoverflow.com/a/4935945/1959808
Ioannis Filippidis

Die setup.py befindet sich im Quellcode-Verzeichnis von Python
Dasons

2
Ich habe ungefähr 50 setup.py-Dateien auf meinem Computer. Welche ist die richtige?
Logik1976

89

Installieren Sie unter Arch / Manjaro einfach das Paket tk:

sudo pacman -S tk

9
Perfekt! Der Fehler, den ich auf Manjaro bekomme und der behoben wurde, ist : ImportError: libtk8.6.so: cannot open shared object file: No such file or directory.
DearVolt

Wie wäre es mit Fenstern?
lone_coder

45

Installieren Sie tk-devel(oder ein Paket mit ähnlichem Namen), bevor Sie Python erstellen.


23
Führen Sie unter Ubuntu 'sudo apt-get install tk-dev' aus und führen Sie make
pycoder112358 am

1
@ pycoder112358: Ich habe es getan, aber es sagt mir immer noch, ImportError: No module named _tkinterwann ich versuche, tkinter zu importieren. Ich verwende python3.4.0, das aus der Quelle unter Ubuntu 13.10 kompiliert wurde.
ARF

7
Was ist tk-devel? Sie sollten zumindest eine minimale Erklärung geben, warum dies in diesem Fall nützlich sein sollte.
nbro

7
Als Kommentar für andere ist hier das "Vor dem Erstellen von Python" wichtig. Wenn Sie das Modul installieren, müssen Sie Python neu erstellen, bevor es das Modul findet.
MJP

20

Damit dies unter pyenvUbuntu 16.04 und 18.04 funktioniert , musste ich:

$ sudo apt-get install python-tk python3-tk tk-dev

Installieren Sie dann die gewünschte Version von Python:

$ pyenv install 3.6.2

Dann könnte ich tkinter ganz gut importieren:

import tkinter

4

Hatte das gleiche Problem auf Fedora mit Python 2.7. Es stellt sich heraus, dass einige zusätzliche Pakete erforderlich sind:

sudo dnf install tk-devel tkinter

Nach der Installation der Pakete scheint dieses Hallo-Welt- Beispiel unter Python 2.7 einwandfrei zu funktionieren:

$ cat hello.py
from Tkinter import *
root = Tk()
w = Label(root, text="Hello, world!")
w.pack()
root.mainloop()
$ python --version
Python 2.7.8
$ python hello.py

Und durch X11-Weiterleitung sieht es so aus:

Hallo Welt bis X11

Beachten Sie, dass in Python 3 der Modulname in Kleinbuchstaben geschrieben ist und wahrscheinlich andere Pakete erforderlich sind ...

from tkinter import *

sudo: dnf: Befehl nicht gefunden (ich bin Ubuntu, ist das der Unterschied?)
mjp

2

Oh, ich bin gerade der Lösung gefolgt, die Ignacio Vazquez-Abrams vorgeschlagen hat, tk-dev zu installieren, bevor die Python erstellt wird. (Erstellen des Python-3.6.1 aus dem Quellcode unter Ubuntu 16.04.)

Es gab vorkompilierte Objekte und Binärdateien, die ich gestern erstellt habe. Ich habe die Objekte jedoch nicht bereinigt und nur erneut auf demselben Erstellungspfad erstellt. Und es funktioniert wunderbar.

sudo apt install tk-dev
(On the python build path)
(No need to conduct 'make clean')
./configure
make
sudo make install

Das ist es!


2

Ich bin auf dieses Problem in Python 2.7.9 gestoßen.
Um dies zu beheben, habe ich tk und tcl installiert, dann Python-Code neu erstellt und neu installiert. Während der Konfiguration habe ich den Pfad für tk und tcl explizit festgelegt, indem ich:

./configure --with-tcltk-includes="-I/usr/include" --with-tcltk-libs="-L/usr/lib64 -ltcl8.5 -L/usr/lib64 -ltk8.5"

Außerdem ein ganzer Artikel zum Python-Installationsprozess: Erstellen von Python aus dem Quellcode


1

Ich denke, die vollständigste Antwort darauf ist die hier gefundene akzeptierte Antwort:

Wie kann ich tkinter mit Ubuntus Standard-Python 2.7-Installation zum Laufen bringen?

Ich habe es herausgefunden, nachdem ich viel zu viel Zeit für dieses Problem aufgewendet hatte, damit ich hoffentlich jemand anderem den Ärger ersparen kann.

Ich fand diesen alten Fehlerbericht als ungültig, der das genaue Problem erwähnte, das ich hatte. Ich hatte Tkinter.py, aber das Modul _tkinter konnte nicht gefunden werden: http://bugs.python.org/issue8555

Ich habe das tk-dev-Paket mit apt-get installiert und Python mit ./configure, make und make install im Verzeichnis Python2.7.3 neu erstellt. Und jetzt kann mein Python2.7 Tkinter importieren, yay!

Ich bin ein wenig verärgert darüber, dass das tk-dev-Paket in der Python-Installationsdokumentation überhaupt nicht erwähnt wird. Unten finden Sie eine weitere hilfreiche Ressource zu fehlenden Modulen in Python, wenn jemand wie ich feststellen sollte, dass mehr als fehlen _tkinter.



1

Stellen Sie für alle Benutzer von Windows und Windows Subsystem für Linux sicher, dass beim Ausführen des Python-Befehls über die Befehlszeile die Python-Installation nicht versehentlich über die WSL ausgeführt wird! Das bereitete mir gerade Kopfschmerzen. Eine schnelle Überprüfung, die Sie dafür durchführen können, lautet:
which <python command you're using>
Wenn das so etwas wie druckt, /usr/bin/python2obwohl Sie sich in Powershell befinden, ist das wahrscheinlich der Fall.


1

Anscheinend hatten viele dieses Problem (ich eingeschlossen) und ich fand den Fehler darin, dass Tkinter beim Kompilieren von Python nicht auf meinem System installiert war.

Dieser Beitrag beschreibt, wie Sie das Problem lösen können, indem Sie:

  1. Entfernen der virtuellen Umgebung / Python-Distribution
  2. installiere Tkinter mit sudo apt-get install tk-dev(für deb) odersudo pacman -S tk (für arch / manjaro)
  3. Fahren Sie dann fort, um Python erneut zu kompilieren.

Das hat Wunder für mich gewirkt.


Dies ist die richtige Lösung, danke! Ich weiß immer noch nicht, warum Sie bei den am besten bewerteten Antworten viele Probleme haben, ohne zu erklären, wie es geht, und eine einfache Befehlszeile ist unten vergraben ...
Tomás Ralph

Danke für Ihre netten Worte. Hoffe, dass jemand anderes dies nützlicher finden könnte als alle Vermutungen, die gemacht wurden, ist dieser Thread: /
Jakob Guldberg Aaes

0

Dieses Symptom kann auch auftreten, wenn eine spätere Version von Python (z. B. 2.7.13) in / usr / local / bin "neben" der Release-Python-Version installiert wurde und anschließend ein Betriebssystem-Upgrade (z. B. Ubuntu 12.04) durchgeführt wird -> Ubuntu 14.04) kann die aktualisierte Python dort nicht entfernen.

Um diese Unverträglichkeit zu beheben, muss man

a) Entfernen Sie die aktualisierte Version von Python in / usr / local / bin.

b) deinstalliere python-idle2.7; und

c) Installieren Sie python-idle2.7 neu.


0

Wenn Sie auf einer AWS-Instanz ausgeführt werden, auf der Amazon Linux ausgeführt wird, lautete der magische Befehl, um dies für mich zu beheben

sudo yum install tkinter

Wenn Sie Ihren Linux-Build bestimmen möchten, versuchen Sie es cat /etc/*release


Wie wäre es mit Fenstern?
lone_coder

0

Selbst nach der Installation von python-tk, python3-tk wurde eine Fehlermeldung angezeigt, dass Ihr Python nicht für Tk konfiguriert ist.

Also habe ich zusätzlich tk8.6-dev installiert. Dann baue ich meinen Python erneut und führe Folgendes aus: make, make install.

Als ich dies tat, sah ich Meldungen auf dem Bildschirm, dass _tkinter und verwandte Module erstellt werden. Sobald das erledigt ist, habe ich 'import tkinter' versucht und es hat funktioniert.


-3

Sie müssen tkinter für python3 installieren.

Bei Fedora pip3 install tkinter --userkehrt zurück Could not find a version that satisfies the requirement... also muss ich befehlen : dnf install python3-tkinter. Dies hat mein Problem gelöst

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.