ImportError: sem o nome '_tkinter', instale o pacote python3-tk

28

Eu sou novo no Ubuntu e Linux em geral.

Criei um sistema operacional de inicialização dupla no meu laptop (Windows 10 e Ubuntu).

  • Digitando: sudo apt-get install python3-tk(ou até python-tk) não funcionou.
  • Tentando instalar o python3-devou python-devel(sem sorte).
  • Baixando Tcl e Tk para instalar manualmente.

No Windows 10 Bash Subsystem, o Tk e o Tcl já estão incluídos, então pensei que o Ubuntu já o tivesse. Mas quero usar minha área de trabalho Ubuntu para desenvolver aplicativos GUI Python.

Então, como posso instalar o Tcl / Tk para ser usado no Python 3.5 para desenvolvimento de GUI?

Carreguei bem o Python 3.5.2, mas preciso dos módulos da GUI ativados.

O código para testar se Tk está funcionando é:

  1. Tipo python3
  2. Tipo:

    import tkinter   
    tkinter._test()
    
  3. Resultado: um pop-up da GUI exibindo This is a Tcl/Tk version..

MaximoTrinidad
fonte
3
"Eu carreguei o Python 3.5.2" - como exatamente? se você estiver executando um python instalado manualmente, em seguida, instalar pacotes python sistema com apt-get é improvável que a ajuda
steeldriver
1
Vi que sua resposta para sua própria pergunta é compilar o Tcl / Tk a partir do código-fonte, mas acho que isso não é necessário, a menos que você tenha instalado manualmente o Python, ou seja, sem usar o gerenciador de pacotes Apt. Você pode esclarecer se você instalou o Python manualmente? Instalar python3-tke, em seguida, executar o código Python que forneceu trabalhos sobre meu sistema Python 3.
edwinksl

Respostas:

30

sudo apt-get install python3-tkInstala tkinterpara Python3.xx

Fontes:

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

Elder Geek
fonte
6
Nota - para python3.6 em que python3.5 era meu padrão, eu tive que usar ... instalar python3.6-tk ....
SteveJ
+1. Eu acrescentaria para aqueles que leem isso que o tkinter parece não ter um pacote PyPI, de modo que o uso do gerenciador de pacotes Ubuntu, conforme sugerido nesta resposta, é provavelmente a próxima melhor opção.
Dpritch
1
@dpritch Há um pacote disponível no repositório Universe chamado [pypibrowser] ( packages.ubuntu.com/... que fornece a funcionalidade que eu acredito que você está procurando Saúde.!
Elder Geek
python3-tkinterpara mim no Fedora com dnfpelo menos.
Pysis
@Pysis Sinto muito por qualquer confusão que você possa ter experimentado. Esta resposta como este site inteiro é sobre o Ubuntu. Você pode se beneficiar do passeio. A primeira frase deixa bem claro, se não, uma maior clareza está disponível aqui. Felicidades!
Elder Geek
26

Para um ambiente virtual python 3.6 com o Python 3.5 como o python "sistema" (Ubuntu), tive que instalar o tk 3.6 para corresponder;

sudo apt-get install python3.6-tk

Meu python padrão no ubuntu era 3.5, portanto, ao usar um venv para 3.6, recebia um erro de importação. Me deixou louco por um tempo.

[Editar: À medida que essa pergunta envelhece]

Em geral, parece que se alguém estiver usando um ambiente virtual com um python de uma versão diferente da máquina básica, deve-se instalar tk para a versão do python usada no ambiente virtual.

sudo apt install python3.x-tk

Onde 3.x corresponderia à versão do ambiente virtual.

[Editar]

Pode ser necessário adicionar o repositório para tk. Na minha experiência, era o mesmo repositório do qual puxei o python3.6, mas isso pode mudar com o tempo;

sudo add-apt-repository ppa:deadsnakes/ppa
SteveJ
fonte
1
Interessante. Você pode explicar até que ponto o PPA o instalou, até onde eu vejo, python3.6-tk não existe nos repositórios no momento.
Elder Geek
1
Fiz uma edição adicional na tentativa de torná-lo mais atual.
Elder Geek
3
FINALMENTE! Este é o trabalho para mim quando sudo apt-get install python3-tknão. Obrigado #
Peter
2
Para python 3.7 eu tive que usar sudo apt-get install python3.7-tkpara fazê-lo funcionar
ilias
Foi isso. A única solução que funcionou para mim em doze páginas do Stackoverflow.
Avio
0

Isso pode ser interessante ao instalar a partir do código-fonte (o que a maioria dos usuários de python não faz):

Depois de instalar o tcl e o tk .

Volte para a sua versão do Python, faça make. E, se pythonexistirem várias versões , faça a make altinstall.

  1. Abrir Python3.5
  2. tipo:

    import tkinter
    tkinter._test()
    
  3. resultados OK - GUI pop aberta e funcionando conforme o esperado.

MaximoTrinidad
fonte
2
-1 Isso não será relevante para a maioria das pessoas, pois a maioria será instalada via gerenciador de pacotes e não a partir da fonte.
RockJake28
introdução adicional, para que não confunda e ainda possa ajudar alguém
mit
0

No meu caso, eu estava recebendo o mesmo erro que "ImportError: nenhum módulo chamado '_tkinter'" para python3.5, apesar de fazer o seguinte: - Instalação de python3-tk e tkinter-dev - O diretório Tkinter está disponível em / usr / lib / python3.5.

O erro observado foi do seguinte arquivo:

O arquivo "/usr/local/lib/python3.5/tkinter/ init .py", linha 35, em import _tkinter # Se isso falhar, seu Python pode não estar configurado para Tk

No entanto, quando eu simplesmente executei o python em / usr / bin como /usr/bin/python3.5 no terminal, funcionou para mim!

Resumindo, basta garantir que a versão python sendo executada no terminal tenha o tkinter instalado e configurado :)

Eu tenho o Ubuntu16.04 instalado no meu sistema, que vem com o padrão python2.7 e python3.5

Kaustubh Sable
fonte
0

Instalar apenas arquivos de biblioteca pode não funcionar, pois você deseja usar a própria biblioteca e não desenvolvê-la.

Isso funcionou para mim:

$ sudo apt install tk8.6-dev
ismailarilik
fonte
Embora isso possa responder à pergunta, talvez você possa expandi-lo para explicar o que o comando acima faz e por que ele pode corrigir o problema?
Joshua Besneatte 18/07
ismailarilik O que @JoshuaBesneatte está tentando dizer é: não dê apenas os comandos ao solicitante, mas explique o que os comandos fazem e por que ele / ela deve aplicá-los. Tal como está, é provável que a sua resposta seja eliminada devido à falta de qualidade ... :-(
Fabby 18/07