ImportError: sin nombre '_tkinter', instale el paquete python3-tk

28

Soy nuevo en Ubuntu y Linux en general.

Creé un sistema operativo de arranque dual en mi computadora portátil (Windows 10 y Ubuntu).

  • Escribir: sudo apt-get install python3-tk(o incluso python-tk) no funcionó.
  • Intentando instalar el python3-devo python-devel(sin suerte).
  • Descargando Tcl y Tk para instalar manualmente.

En Windows 10 Bash Subsystem, Tk y Tcl ya están incluidos, así que pensé que Ubuntu ya lo tenía. Pero, quiero usar mi escritorio Ubuntu para desarrollar aplicaciones de interfaz gráfica de usuario de Python.

Entonces, ¿cómo puedo instalar el Tcl / Tk para usarlo en Python 3.5 para el desarrollo de GUI?

Cargué Python 3.5.2 bien pero necesito los módulos GUI habilitados.

El código para probar que Tk está funcionando es:

  1. Tipo python3
  2. Tipo:

    import tkinter   
    tkinter._test()
    
  3. Resultado: una ventana emergente GUI que muestra This is a Tcl/Tk version..

MaximoTrinidad
fuente
3
"Cargué Python 3.5.2" - ¿cómo exactamente? si está ejecutando una pitón instalado manualmente después de instalar los paquetes de Python sistema con apt-get es poco probable que ayuda
steeldriver
1
Vi que su respuesta a su propia pregunta es compilar Tcl / Tk desde la fuente, pero no creo que sea necesario a menos que haya instalado manualmente Python, es decir, sin usar el administrador de paquetes Apt. ¿Puedes aclarar si has instalado Python manualmente? Instalar python3-tky ejecutar el código Python que proporcionó funciona en mi sistema Python 3.
edwinksl

Respuestas:

30

sudo apt-get install python3-tkSe instala tkinterpara Python3.xx

Fuentes:

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

Elder Geek
fuente
66
Nota: para python3.6 en el que python3.5 era mi predeterminado, tuve que usar ... instalar python3.6-tk ....
SteveJ
+1. Para aquellos que lean esto, agregaría que tkinter no parece tener un paquete PyPI, por lo que es probable que la siguiente mejor opción sea usar el administrador de paquetes de Ubuntu como se sugiere en esta respuesta.
dpritch
1
@dpritch Hay un paquete disponible en el repositorio de Universe llamado [pypibrowser] ( packages.ubuntu.com/… que proporciona la funcionalidad que creo que estás buscando. ¡Salud!
Elder Geek
python3-tkinterpara mí en Fedora con dnfal menos.
Pysis
@Pysis Lamento cualquier confusión que pueda haber experimentado. Esta respuesta como este sitio completo es sobre Ubuntu. Podría beneficiarse de la gira. La primera oración lo deja bastante claro, si no, hay más claridad disponible aquí. ¡Aclamaciones!
Élder Geek
26

Para un entorno virtual python 3.6 con Python 3.5 como el "sistema" python (Ubuntu), tuve que instalar tk 3.6 para que coincidiera;

sudo apt-get install python3.6-tk

Mi python predeterminado en ubuntu era 3.5, por lo que cuando usaba un venv para 3.6, recibía un error de importación. Me volvió loco por un tiempo.

[Editar: a medida que esta pregunta envejece]

En general, parece que si se está utilizando un entorno virtual con una versión de Python diferente a la de la máquina base, se debe instalar tk para la versión de Python utilizada en el entorno virtual.

sudo apt install python3.x-tk

Donde 3.x coincidiría con la versión del entorno virtual.

[Editar]

Puede ser necesario agregar el repositorio para tk. En mi experiencia, era el mismo repositorio del que saqué python3.6, pero eso puede cambiar con el tiempo;

sudo add-apt-repository ppa:deadsnakes/ppa
SteveJ
fuente
1
Interesante. Podría ir tan lejos como para explicar desde qué PPA lo instaló hasta donde puedo ver que python3.6-tk no existe en los repositorios en este momento.
Élder Geek
1
Hice una nueva edición en un intento de hacerlo más actual.
Élder Geek
3
¡FINALMENTE! Esto funcionó para mí cuando sudo apt-get install python3-tkno lo hice. Gracias
Peter
2
Para Python 3.7 tuve que usar sudo apt-get install python3.7-tkpara que funcionara
ilias
Eso fue todo. La única solución que me funcionó en doce páginas de Stackoverflow.
Avio
0

Esto puede ser interesante al instalar desde la fuente (que la mayoría de los usuarios de Python no)

Después de instalar tcl y tk .

Vuelve a tu versión de Python, hazlo make. Y, si pythonexisten varias versiones de , haga un make altinstall.

  1. Abrir Python3.5
  2. tipo:

    import tkinter
    tkinter._test()
    
  3. resultados OK - pop GUI abierto y funcionando como se esperaba.

MaximoTrinidad
fuente
2
-1 Esto no será relevante para la mayoría de las personas, ya que la mayoría se instalará a través del administrador de paquetes en lugar de hacerlo desde la fuente.
RockJake28
introducción añadido, por lo que no hay que confundir y aún podría ayudar a alguien
mit
0

En mi caso, recibí el mismo error que "ImportError: ningún módulo llamado '_tkinter'" para python3.5 a pesar de hacer lo siguiente: - Instalar python3-tk y tkinter-dev - El directorio Tkinter está disponible en / usr / lib / python3.5.

El error observado fue del siguiente archivo:

Archivo "/usr/local/lib/python3.5/tkinter/ init .py", línea 35, en import _tkinter # Si esto falla, su Python puede no estar configurado para Tk

Sin embargo, cuando simplemente ejecuté el python desde / usr / bin como /usr/bin/python3.5 desde la terminal, ¡funcionó para mí!

En resumen, solo asegúrese de que la versión de Python que se ejecuta desde la terminal tenga el tkinter instalado y configurado :)

Tengo Ubuntu16.04 instalado en mi sistema que viene con python2.7 y python3.5 predeterminados

Kaustubh Sable
fuente
0

Instalar solo archivos de biblioteca puede no funcionar ya que desea usar la biblioteca en sí misma, no desarrollarla.

Esto funcionó para mí:

$ sudo apt install tk8.6-dev
ismailarilik
fuente
Si bien esto puede responder la pregunta, ¿tal vez podría expandirlo para explicar qué hace el comando anterior y por qué podría solucionar el problema?
Joshua Besneatte
ismailarilik Lo que @JoshuaBesneatte está tratando de decir es: no solo le dé al solicitante los comandos, sino que explique qué hacen los comandos y por qué debería aplicarlos. Tal como está, es probable que su respuesta se elimine debido a la falta de calidad ... :-(
Fabby