ImportError: nessun nome '_tkinter', installa il pacchetto python3-tk


28

Sono nuovo di Ubuntu e Linux in generale.

Ho creato un sistema operativo dual boot sul mio laptop (Windows 10 e Ubuntu).

  • Digitando: sudo apt-get install python3-tk(o anche python-tk) non ha funzionato.
  • Prova di installare il python3-devo python-devel(senza fortuna).
  • Download di Tcl e Tk per l'installazione manuale.

Nel sottosistema Bash di Windows 10 Tk e Tcl sono già inclusi, quindi ho pensato che Ubuntu lo avesse già. Ma voglio usare il mio desktop Ubuntu per sviluppare app GUI Python.

Quindi, come posso installare Tcl / Tk da usare in Python 3.5 per lo sviluppo della GUI?

Ho caricato Python 3.5.2 bene ma ho bisogno dei moduli GUI abilitati.

Il codice per verificare che Tk funzioni è:

  1. genere python3
  2. Genere:

    import tkinter   
    tkinter._test()
  3. Risultato: viene visualizzata una finestra a comparsa della GUI This is a Tcl/Tk version..


3
"Ho caricato Python 3.5.2" - come esattamente? se stai eseguendo un Python installato manualmente, è improbabile che l'installazione di pacchetti Python di sistema con apt-get sia di aiuto
Steeldriver

1
Ho visto che la tua risposta alla tua domanda è compilare Tcl / Tk dal sorgente ma non penso che sia necessario a meno che tu non abbia installato manualmente Python, cioè senza usare il gestore di pacchetti Apt. Puoi chiarire se hai installato Python manualmente? Installare python3-tke quindi eseguire il codice Python fornito funziona sul mio sistema Python 3.
edwinksl

Risposte:


30

6
Nota - per python3.6 in cui python3.5 era il mio valore predefinito, ho dovuto usare ... install python3.6-tk ....
SteveJ

+1. Aggiungerei per coloro che leggono questo che tkinter non sembra avere un pacchetto PyPI in modo che l'uso del gestore di pacchetti Ubuntu come suggerito in questa risposta sia probabilmente la migliore opzione successiva.
dpritch,

1
@dpritch C'è un pacchetto disponibile nel repository Universe chiamato [pypibrowser] ( pacchetti.ubuntu.com/… che fornisce la funzionalità che credo tu stia cercando. Saluti!
Elder Geek

python3-tkinterdnfalmeno per me su Fedora .
Pysis,

@Pysis Mi dispiace per la confusione che potresti aver provato. Questa risposta come questo intero sito riguarda Ubuntu. Potresti beneficiare del tour. La prima frase rende abbastanza chiaro, in caso contrario, ulteriore chiarezza è disponibile qui. Saluti!
Elder Geek,

26

Per un ambiente virtuale python 3.6 con Python 3.5 come "system" python (Ubuntu), ho dovuto installare tk 3.6 per abbinare;

sudo apt-get install python3.6-tk

Il mio python predefinito in Ubuntu era 3.5, quindi quando si utilizza un venv per 3.6, si ottiene un errore di importazione. Mi ha fatto impazzire per un po '.

[Modifica: con l'invecchiamento di questa domanda]

In generale, sembra che se si utilizza un ambiente virtuale con un pitone di una versione diversa rispetto a quella della propria macchina di base, è necessario installare tk per la versione di python utilizzata nell'ambiente virtuale.

sudo apt install python3.x-tk

Dove 3.x corrisponderebbe alla versione dell'ambiente virtuale.

[Modificare]

Potrebbe essere necessario aggiungere il repository per tk. Nella mia esperienza, è stato lo stesso repository da cui ho estratto python3.6, ma che potrebbe cambiare con il tempo;

sudo add-apt-repository ppa:deadsnakes/ppa

1
Interessante. Potresti andare fino a spiegare da quale PPA è stato installato da quanto posso vedere python3.6-tk non esiste nei repository in questo momento.
Elder Geek,

1
Ho fatto un'ulteriore modifica nel tentativo di renderlo più attuale.
Elder Geek

3
FINALMENTE! Questo ha funzionato per me quando sudo apt-get install python3-tkno. Grazie
Peter,

2
Per python 3.7 ho dovuto usare sudo apt-get install python3.7-tkper farlo funzionare
ilias il

Questo è stato. L'unica soluzione che ha funzionato per me in dodici pagine di Stackoverflow.
Avio,

0

Questo potrebbe essere interessante quando si installa dall'origine (cosa che la maggior parte degli utenti di Python non farà):

Dopo aver installato tcl e tk .

Torna alla tua versione di Python, fallo make. E, se pythonesistono più versioni di , fare un make altinstall.

  1. Apri Python3.5
  2. genere:

    import tkinter
    tkinter._test()
  3. risultati OK - pop GUI aperta e funzionante come previsto.


2
-1 Questo non sarà rilevante per la maggior parte delle persone in quanto la maggior parte verrà installata tramite Gestione pacchetti anziché dalla fonte.
RockJake28,

aggiunta introduzione, quindi non confonderà e potrebbe comunque aiutare qualcuno
mit

0

Nel mio caso, stavo ottenendo lo stesso errore di "ImportError: nessun modulo chiamato '_tkinter'" per python3.5 nonostante le seguenti operazioni: - Installazione di python3-tk e tkinter-dev - La directory di Tkinter è disponibile in / usr / lib / python3.5.

L'errore osservato proveniva dal seguente file:

File "/usr/local/lib/python3.5/tkinter/ init .py", riga 35, in import _tkinter # In caso contrario, Python potrebbe non essere configurato per Tk

Tuttavia, quando ho semplicemente eseguito Python da / usr / bin come /usr/bin/python3.5 dal terminale, ha funzionato per me!

In breve, assicurati solo che la versione di Python in esecuzione dal terminale abbia il tkinter installato e configurato :)

Ho Ubuntu16.04 installato sul mio sistema che viene fornito con python2.7 predefinito e python3.5


0

L'installazione dei soli file di libreria potrebbe non funzionare poiché si desidera utilizzare la libreria stessa non svilupparla.

Questo ha funzionato per me:

$ sudo apt install tk8.6-dev

mentre questo può rispondere alla domanda, forse potresti espanderlo per spiegare cosa fa il comando sopra e perché potrebbe risolvere il problema?
Joshua Besneatte il

ismailarilik Quello che @JoshuaBesneatte sta cercando di dire è: non solo dare al richiedente i comandi, ma spiegare cosa fanno i comandi e perché dovrebbe applicarlo.
Allo stato
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.