Modul _tkinter fehlt, aber python-tk ist installiert

Fragen zu Tkinter.
Antworten
sisu
User
Beiträge: 28
Registriert: Sonntag 14. November 2010, 12:02

Hallo,

auf meinem Rechner (Ubuntu 10.04) sind zwei Python-Versionen installiert, 2.6.5 und 3.1.2, wobei ich nur mit der 3er-Version programmiere.
Gestern wollte ich mich (mit Version 3) an Tkinter heranwagen, bekam vom Interpreter aber folgende Fehlermeldung ausgeworfen:

Code: Alles auswählen

Python 3.1.2 (r312:79147, Sep 27 2010, 09:45:41) 
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import tkinter
Traceback (most recent call last):
  File "/usr/lib/python3.1/tkinter/__init__.py", line 40, in <module>
    import _tkinter
ImportError: No module named _tkinter

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.1/tkinter/__init__.py", line 42, in <module>
    raise ImportError(str(msg) + ', please install the python-tk package')
ImportError: No module named _tkinter, please install the python-tk package
Ich schaute nach, aber das Paket python-tk war bereits installiert, bloß findet sich im Verzeichnis /usr/lib/python3.1/tkinter/ keine Datei "_tkinter.py". Da ich ausschließen wollte, dass ich mal versehentlich etwas deinstalliert hatte, was nun benötigt würde, de- und neuinstallierte ich python-tk inklusive der Pakete blt, tcl8.5 und tk8.5, was aber nicht half - der Fehler bleibt der gleiche.

Dann probierte ich es mal mit der 2er-Version, was sofort tadellos funktionierte und mir ein Fenster hinzauberte:

Code: Alles auswählen

Python 2.6.5 (r265:79063, Apr 16 2010, 13:09:56) 
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> Tkinter
<module 'Tkinter' from '/usr/lib/python2.6/lib-tk/Tkinter.pyc'>
>>> frame = Tkinter.Tk()
>>>

Wie bekomme ich Tkinter unter Python 3.x zum Laufen? Woher nehme ich das Modul _tkinter? Ist das ein Problem des Ubuntu-Pakets? Hatte so einen Fall neulich mit Ren'Py schon mal, da war das Ubuntu-Paket schuld…
BlackJack

@sisu: `python-tk` ist das Paket für Python 2. Du brauchst `python3-tk`.
sisu
User
Beiträge: 28
Registriert: Sonntag 14. November 2010, 12:02

Oh Mann, man soll sich nicht blind auf Fehlermeldungen verlassen xD

Danke, funktioniert!
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Blind sowieso nie, aber diese Fehlermeldung hat doch genau das gesagt. "...please install the python-tk package". Das dieses Paket in der Version 3.x vorliegen muss, darauf musst du schon selbst kommen, wenn du Python 3.x nutzt, denn es wird kaum jemand alle "raise"s überarbeiten und die Version für jedes Modul nachziehen, zudem müsste man dann noch sehen wie das Paket in den verschiedenen Paketverwaltungen heißt. Also im Grunde eine sehr präzise Fehlermeldung.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
sisu
User
Beiträge: 28
Registriert: Sonntag 14. November 2010, 12:02

Kann man sicherlich unterschiedlich sehen. Für mich als Anfänger war es nicht eindeutig, was ich zu tun habe. Wenigstens hab ich schon mal rausgefunden, dass es je nach Version Tkinter oder tkinter heißt ^^
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Dir ist aber bewusst, das Python 3.x nicht kompatibel mit Python 2.x ist, da es einige Änderungen gibt ?!

Bei "Tkinter" zum Beispiel, wurde der Modulnamen nur den PEPs angeglichen, nämlich alles kleine Buchstaben. In Tkinter selbst ist aber die einzig "große" Neuheit das "ttk" in das python3-tk Package mit übernommen wurde. (Was in Python 2.7 auch schon in einigen Distributionen erfolgte)
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Antworten