it-swarm.com.de

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

Heute wollte ich mit Tkinter arbeiten, habe aber 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 meinen Python 3.2 also so konfigurieren, dass er mit Tkinter funktioniert?

57
Maciej Ziarko

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

Wenn dies mit "Kein Modul mit dem Namen _tkinter" fehlschlägt, muss Ihre Python-Konfiguration geändert werden, um dieses Modul (das in C implementiertes Erweiterungsmodul ist) aufzunehmen. Nicht editieren Module/Setup (es ist veraltet). Möglicherweise müssen Sie Tcl und Tk installieren (bei RPM auch die -devel-RPMs installieren) und/oder das Skript setup.py bearbeiten, um auf die richtigen Speicherorte zu zeigen, an denen Tcl/Tk installiert ist. Wenn Sie Tcl/Tk an den Standardspeicherorten installieren, müssen Sie einfach "make" erneut ausführen, um die Erweiterung "_tkinter" zu erstellen.

26
Sandro Munda

Unter Arch/Manjaro installieren Sie einfach das Paket tk:

Sudo pacman -S tk
60
Jabba

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

Damit dies mit Ubuntu 16.04 mit pyenv funktioniert, musste ich:

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

Dann installieren Sie die Version von Python, die ich wollte:

$ pyenv install 3.6.2

Dann könnte ich tkinter einfach importieren:

import tkinter
9
PaulMest

Hatte dasselbe Problem mit 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-world Beispiel auf Python 2.7 gut 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:

 Hello World through X11

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

from tkinter import *
3
Stefan Saru

Dieses Problem ist bei Python 2.7.9 aufgetreten.
Um das Problem zu beheben, habe ich tk und tcl installiert und dann den Python-Code neu erstellt und neu installiert. Während der Konfiguration habe ich den Pfad für tk und tcl explizit festgelegt, indem:

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

Außerdem einen ganzen Artikel für den Python-Installationsvorgang: Erstellen von Python aus Quelle

2
dasons

Oh, ich habe gerade die Lösung befolgt, die Ignacio Vazquez-Abrams vorgeschlagen hat, die Installation von tk-dev, bevor der Python erstellt wird.

Es gab vorkompilierte Objekte und Binaries, die ich gestern erstellt hatte. Ich habe die Objekte jedoch nicht bereinigt und einfach auf demselben Buildpfad erneut 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!

1
David Jung

Wenn Sie Windows und Windows Subsystem für Linux verwenden, stellen Sie sicher, dass bei Ausführung des Befehls python über die Befehlszeile die Python-Installation nicht versehentlich von WSL aus ausgeführt wird. Das bereitete mir jetzt ziemlich Kopfschmerzen. Eine schnelle Überprüfung, die Sie dafür tun können, ist einfach
which <python command you're using>
Wenn dies etwas wie /usr/bin/python2 ausgibt, obwohl Sie sich in der Powershell befinden, ist dies wahrscheinlich das, was passiert.

1
bbukaty
Sudo apt-get install python3-tk
1
Rafal

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 Upgrade des Betriebssystems (z. B. Ubuntu 12.04) -> Ubuntu 14.04) kann den aktualisierten Python dort nicht entfernen.

Um diese Unvereinbarkeit zu beheben, muss man

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

b) deinstalliere python-idle2.7; und

c) python-idle2.7 neu installieren.

0
s.w.s.

Wenn Sie eine AWS-Instanz ausführen, auf der Amazon Linux OS ausgeführt wird, lautet der magische Befehl, dies zu beheben

Sudo yum install tkinter

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

0
StackG

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

Wie bekomme ich Tkinter mit Ubuntus Standardinstallation von Python 2.7?

Ich habe es nach viel zu viel Zeit für dieses Problem herausgefunden, also hoffentlich kann ich jemandem den Ärger ersparen.

Ich fand diesen alten Fehlerbericht als ungültig und erwähnte genau das Problem hatte ich, ich hatte Tkinter.py, aber es konnte nicht die .__ finden. Modul _tkinter: http://bugs.python.org/issue8555

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

Ich bin etwas verärgert, dass das tk-dev-Paket in .__ überhaupt nicht erwähnt wird. Die Python-Installationsdokumentation ... ist ein weiterer hilfreicher Ressource für fehlende Module in Python, wenn jemand wie ich jemanden entdecken Sie, dass sie mehr als _tkinter fehlen.

0
mjp