ImportError: Kein Name '_tkinter', bitte installieren Sie das Paket python3-tk

28

Ich bin neu in Ubuntu und Linux im Allgemeinen.

Ich habe auf meinem Laptop ein Dual-Boot-Betriebssystem erstellt (Windows 10 und Ubuntu).

  • Tippen: sudo apt-get install python3-tk(oder sogar python-tk) hat nicht funktioniert.
  • Der Versuch, das python3-devoder zu installieren python-devel(kein Glück).
  • Herunterladen von Tcl und Tk zur manuellen Installation.

In Windows 10 Bash Subsystem sind Tk und Tcl bereits enthalten, daher dachte ich, Ubuntu hätte es bereits. Ich möchte jedoch meinen Ubuntu-Desktop verwenden, um Python-GUI-Apps zu entwickeln.

Wie kann ich Tcl / Tk für die GUI-Entwicklung in Python 3.5 installieren?

Ich habe Python 3.5.2 gut geladen, aber die GUI-Module müssen aktiviert sein.

Der Code zum Testen, ob Tk funktioniert, lautet:

  1. Art python3
  2. Art:

    import tkinter   
    tkinter._test()
  3. Ergebnis: Ein GUI-Popup wird angezeigt This is a Tcl/Tk version..

MaximoTrinidad
quelle
3
"Ich habe Python 3.5.2 geladen" - wie genau? Wenn Sie einen manuell installierten Python
ausführen
1
Ich habe gesehen, dass Ihre Antwort auf Ihre eigene Frage darin besteht, Tcl / Tk aus dem Quellcode zu kompilieren, aber ich denke, dass dies nicht erforderlich ist, es sei denn, Sie haben Python manuell installiert, dh ohne den Apt-Paketmanager zu verwenden. Können Sie klären, ob Sie Python manuell installiert haben? Das Installieren python3-tkund Ausführen des von Ihnen bereitgestellten Python-Codes funktioniert auf meinem System Python 3.
edwinksl

Antworten:

30

sudo apt-get install python3-tkInstalliert tkinterfür Python3.xx

Quellen:

https://stackoverflow.com/questions/6084416/tkinter-module-not-found-on-ubuntu https://pythonprogramming.net/python-3-tkinter-basics-tutorial/

Elder Geek
quelle
6
Hinweis - für python3.6, in dem python3.5 mein Standard war, musste ich ... python3.6-tk installieren ....
SteveJ
+1. Ich möchte denjenigen, die dies lesen, hinzufügen, dass tkinter kein PyPI-Paket zu haben scheint, so dass die Verwendung des Ubuntu-Paketmanagers, wie in dieser Antwort vorgeschlagen, wahrscheinlich die nächstbeste Option ist.
Dpritch
1
@dpritch Im Universe-Repository ist ein Paket mit dem Namen [pypibrowser] ( packages.ubuntu.com/… verfügbar, das die Funktionalität bietet , die Sie meines Erachtens suchen. Prost!
Elder Geek
python3-tkinterfür mich auf Fedora mit dnfzumindest.
Pysis
@Pysis Es tut mir leid, dass Sie Verwirrung gestiftet haben. Diese Antwort wie diese ganze Seite handelt von Ubuntu. Sie könnten von der Tour profitieren . Der erste Satz macht es ziemlich klar, wenn nicht, ist hier weitere Klarheit vorhanden . Prost!
Elder Geek
26

Für eine virtuelle Python 3.6-Umgebung mit Python 3.5 als "System" -Python (Ubuntu) musste ich tk 3.6 entsprechend installieren.

sudo apt-get install python3.6-tk

Mein Standard-Python in Ubuntu war 3.5. Wenn ich also ein venv für 3.6 verwende, bekomme ich einen Importfehler. Hat mich eine Weile verrückt gemacht.

[Bearbeiten: Mit zunehmendem Alter dieser Frage]

Im Allgemeinen muss tk für die in der virtuellen Umgebung verwendete Python-Version installiert werden, wenn eine virtuelle Umgebung mit einem Python einer anderen Version als der des Basiscomputers verwendet wird.

sudo apt install python3.x-tk

Wobei 3.x mit der Version der virtuellen Umgebung übereinstimmen würde.

[Bearbeiten]

Möglicherweise muss das Repository für tk hinzugefügt werden. Meiner Erfahrung nach war es dasselbe Repository, aus dem ich python3.6 gezogen habe, aber das kann sich mit der Zeit ändern.

sudo add-apt-repository ppa:deadsnakes/ppa
SteveJ
quelle
1
Interessant. Sie können sogar erklären, von welchem ​​PPA Sie es installiert haben, soweit ich sehe, dass python3.6-tk derzeit nicht in den Repositorys vorhanden ist .
Elder Geek
1
Ich habe eine weitere Bearbeitung vorgenommen, um sie aktueller zu machen.
Elder Geek
3
ENDLICH! Dies ist das für mich gearbeitet, wenn sudo apt-get install python3-tknicht. Vielen Dank
Peter
2
Für Python 3.7 musste ich verwenden sudo apt-get install python3.7-tk, damit es funktioniert
ilias
Das war's. Die einzige Lösung, die für mich auf zwölf Seiten von Stackoverflow funktioniert hat.
Avio
0

Dies könnte bei der Installation von der Quelle aus interessant sein (was die meisten Python-Benutzer nicht tun):

Nach der Installation von tcl und tk .

Kehren Sie zu Ihrer Python-Version zurück make. Und wenn mehrere Versionen von pythonexistieren, machen Sie a make altinstall.

  1. Öffnen Sie Python3.5
  2. Art:

    import tkinter
    tkinter._test()
  3. Ergebnisse OK - Pop-GUI wurde geöffnet und funktioniert wie erwartet.

MaximoTrinidad
quelle
2
-1 Dies ist für die meisten Benutzer nicht relevant, da die meisten über den Paket-Manager und nicht über den Quellcode installiert werden.
RockJake28
Einführung hinzugefügt, damit es nicht verwirrt und trotzdem jemandem hilft
mit
0

In meinem Fall wurde derselbe Fehler wie "ImportError: Kein Modul mit dem Namen '_tkinter'" für python3.5 angezeigt, obwohl folgende Aktionen ausgeführt wurden: - Installation von python3-tk und tkinter-dev - Tkinter-Verzeichnis in / verfügbar usr / lib / python3.5.

Der beobachtete Fehler stammte aus der folgenden Datei:

Datei "/usr/local/lib/python3.5/tkinter/ init .py", Zeile 35, in import _tkinter # Wenn dies fehlschlägt, ist Ihr Python möglicherweise nicht für Tk konfiguriert

Als ich jedoch einfach die Python- Datei von / usr / bin aus wie /usr/bin/python3.5 aus dem Terminal ausgeführt habe, hat es bei mir funktioniert!

Kurz gesagt, stellen Sie einfach sicher, dass auf der Python-Version, die vom Terminal ausgeführt wird, der tkinter installiert und konfiguriert ist :)

Ich habe Ubuntu16.04 auf meinem System installiert, das standardmäßig mit Python2.7 und Python3.5 geliefert wird

Kaustubh Sable
quelle
0

Das Installieren von Bibliotheksdateien funktioniert möglicherweise nicht, da Sie die Bibliothek nicht selbst entwickeln möchten.

Das hat bei mir funktioniert:

$ sudo apt install tk8.6-dev
ismailarilik
quelle
Während dies die Frage beantworten kann, können Sie sie möglicherweise erweitern, um zu erklären, was der obige Befehl bewirkt und warum das Problem behoben werden kann.
Joshua Besneatte
ismailarilik Was @JoshuaBesneatte ist versucht zu sagen: nicht nur der Anforderer geben die Befehle, aber erklären , was die Befehle tun und warum er / sie sich bewerben sollen. So wie es aussieht
Fabby