Error de matplotlib: ningún módulo llamado tkinter

195

Intenté usar el paquete matplotlib a través de Pycharm IDE en Windows 10. cuando ejecuto este código:

from matplotlib import pyplot

Obtuve el siguiente error:

ImportError: No module named 'tkinter'

Sé que en Python 2.x se llamaba Tkinter, pero ese no es el problema: acabo de instalar un nuevo Python 3.5.1.

EDITAR: además, también intenté importar 'tkinter' y 'Tkinter', ninguno de estos funcionó (ambos devolvieron el mensaje de error que mencioné).

noamgot
fuente
¿Has importado tkinter por import Tkintero import tkinter?
Avión
1
sí, olvidé mencionar que ... recibí el mismo mensaje de error
noamgot
ImportError: No module named '_tkinter', please install the python3-tk package?
knh170
@ knh170 no, simplemente el mensaje que se muestra en mi publicación original.
noamgot
44
parece que usó una instalación personalizada. Vuelva a ejecutar el instalador de Python, presione modificar y luego marque td / tk e IDLE
omilus

Respuestas:

221
sudo apt-get install python3-tk

Luego,

>> import tkinter # all fine

Editar :

Para Windows, creo que el problema es que no instaló el paquete completo de Python. Dado que Tkinter debe enviarse con Python fuera de la caja. Ver: http://www.tkdocs.com/tutorial/install.html

Sugiero instalar ipython , que también proporciona un potente shell y los paquetes necesarios.

knh170
fuente
¡ESTÁ FUNCIONANDO! ¡Gracias! (Instalé anaconda a través del enlace que pusiste en tu publicación)
noamgot
3
si estás en una caja CentOS, el comando essudo yum install python36u-tkinter.x86_64
n1c9
Estoy usando pycharm y recibí el mismo error con respecto al paquete que falta. Después de instalar el paquete tkinter, matplotlib funcionó bien. Gracias @ knh170
debaonline4u
Trabajó para mí con Ubuntu 18.04 usando python3 en venv. Simplemente instálelo: sudo apt-get install python3-tk Luego puede probarlo desde python3 shell: desde matplotlib import pyplot
serfer2
1
@ knh170 ¿Podemos instalar tkinter usando pip? No puedo buscar nada relacionado con esto
Scott Yang
99

puedes usar

import matplotlib
matplotlib.use('agg')
import matplotlib.pyplot as plt

si no quieres usarlo tkinteren absoluto.

Tampoco se olvide de usar %matplotlib inlineen la parte superior de su computadora portátil si usa una.

EDITAR: agges un backend diferente como tkinterpara matplotlib.

markroxor
fuente
1
Esto es bueno, porque debido a que trabajo con un servidor no necesito y tengo X11, pero algunos programas que he instalado dependen de matplotlib.
rien333
2
¡Fantástico! En caso de que alguien se pregunte cómo funciona esto
Matt
2
esta solución no funciona si quieres trazar algo
Beyhan Gül
44
Solo para agregar a esta respuesta: agges un back-end que no es GUI, por plt.show()lo que no tendrá ningún efecto. Pero aún puede hacer plt.savefig(filename)y mirar el archivo para una depuración rápida.
Nico
1
Me ahorra tiempo al tratar con este error tkinter.
annoying_squid
35

En Centos, los nombres y comandos del paquete son diferentes. Tendrás que hacer:

sudo yum install tkinter

Para solucionar el problema

razeh
fuente
29

Para los usuarios de Windows , no es necesario volver a descargar el instalador. Solo haz lo siguiente:

  1. Vaya al menú de inicio, escriba Programas y características ,
  2. Seleccione la versión de Python (para mí es Python 3.6.5 (64 bits) ),
  3. Haga clic derecho, presione Cambiar ,
  4. Haz clic en Modificar ,
  5. Seleccione td / tk e IDLE (que instala tkinter) y haga clic en siguiente .

Espere la instalación y ya está.

gdrt
fuente
44
Gracias. Es la respuesta más útil y correcta entre otras. (Para usuarios del sistema operativo Windows, por supuesto)
Ruslan K.
20

Casi todas las respuestas que busqué para este problema dicen que Python en Windows viene con tkinter y tcl ya instalados, y no tuve suerte tratando de descargarlos o instalarlos usando pip o el sitio actviestate.com. Finalmente descubrí que cuando estaba instalando Python usando el instalador binario, había desmarcado el módulo relacionado con TCL y tkinter. Entonces, ejecuté el instalador binario nuevamente y elegí modificar mi versión de Python esta vez seleccionando esta opción. No hay necesidad de hacer nada manualmente entonces. Si va a su terminal de Python, los siguientes comandos deberían mostrarle la versión de tkinter instalada con su Python:

import tkinter
import _tkinter
tkinter._test()
usuario58419
fuente
1
Correcto. Una instalación de Windows es el único sistema donde esto puede suceder, como fue mi caso. +1. Esto sin duda vale la pena señalar para los usuarios con instalaciones de Windows.
marcushobson
18

Si está usando fedora, primero instale tkinter

sudo dnf install python3-tkinter

No creo que necesite importar tkinter después, también le sugiero que use virtualenv

$ python3 -m venv myvenv
$ source myvenv/bin/activate

Y agregue los paquetes necesarios usando pip

poudel de salvia
fuente
10

En CentOS 7 y Python 3.4, el comando es sudo yum install python34-tkinter

En Redhat 7.4 con Python 3.6, el comando es sudo yum install rh-python36-python-tkinter

Krzysztof Buchacz
fuente
3
En Centos 7 y Python 3.6, el comando essudo yum install python36u-tkinter.x86_64
Rob Hall,
8

Para usuarios de Windows, vuelva a ejecutar el instalador. Selecciona Modificar. Marque la casilla para tcl / tk e IDLE. La descripción de esto dice "Instala tkinter"

peteey
fuente
8

En Ubuntu, a principios de 2018, no hay python3.6-tkdistribuciones normales en ubuntu (xenial / 16.04), por lo que incluso si tiene versiones anteriores depython-tk esto no funcionará.

Mi solución fue usar configurar todo con python 3.5:

 sudo apt install python3.5-tk
 virtualenv --python=`which python3.5` python-env
 source python-env/bin/activate
 pip install -r requirements.txt

Y ahora matplotlibpuede encontrar tkinter.

EDITAR :

Solo necesitaba 3.6 después de todo, y el truco era:

sudo apt install tk-dev

y luego reconstruir python3.6, después tk-dev , por ejemplo:

./configure
make
make install
Josh.F
fuente
3
Actualización: Ahora hay ES una python3.6-tk! sudo apt install python3.6-tktrabaja aquí :)
Luis
4

Si está utilizando Python 3.6, esto funcionó para mí:

sudo apt-get install python3.6-tk

en vez de

sudo apt-get install python3-tk

Que funciona para otras versiones de python3

bertucho
fuente
44
No tengo un paquete python3.6-tk en ubuntu 16.04.
Brooks
@brooks, lo mismo aquí
Url gratis el
Tampoco existía en Centos
Rob Hall
Debería estar disponible ahora en ubuntu 16.04
Yu-Lin Chen
3

Para los pobres como yo usando Python 3.7 . Necesitas el python3.7-tkpaquete.

sudo apt install python3.7-tk

$ python
Python 3.7.4 (default, Sep  2 2019, 20:44:09)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tkinter
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'tkinter'
>>> exit()

Nota. python3-tkesta instalado. Pero no python3.7-tk.

$ sudo apt install python3.7-tk
Reading package lists... Done
Building dependency tree
Reading state information... Done
Suggested packages:
  tix python3.7-tk-dbg
The following NEW packages will be installed:
  python3.7-tk
0 upgraded, 1 newly installed, 0 to remove and 34 not upgraded.
Need to get 143 kB of archives.
After this operation, 534 kB of additional disk space will be used.
Get:1 http://ppa.launchpad.net/deadsnakes/ppa/ubuntu xenial/main amd64 python3.7-tk amd64 3.7.4-1+xenial2 [143
kB]
Fetched 143 kB in 0s (364 kB/s)
Selecting previously unselected package python3.7-tk:amd64.
(Reading database ... 256375 files and directories currently installed.)
Preparing to unpack .../python3.7-tk_3.7.4-1+xenial2_amd64.deb ...
Unpacking python3.7-tk:amd64 (3.7.4-1+xenial2) ...
Setting up python3.7-tk:amd64 (3.7.4-1+xenial2) ...

Después de instalarlo, todo bien.

$ python3
Python 3.7.4 (default, Sep  2 2019, 20:44:09)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tkinter
>>> exit()
Pedro Rodrigues
fuente
2

En CentOS 6.5 con python 2.7 tenía que hacer: yum install python27-tkinter

usuario1747134
fuente
1
Recibo "No hay paquete python27-tkinter disponible".
Proutray
2

A veces (por ejemplo, en la distribución osgeo4w) se elimina tkinter.

Intente cambiar el archivo matplotlib edit matplotlibrc ubicado en el [python install dir]/matplotlib/mpl-data/matplotlibrccambio del parámetro backend de backend: TkAggalgo diferente a lo backend: Qt4Aggque se describe aquí: http://matplotlib.org/faq/usage_faq.html#what-is-a-backend

Enrico Ferreguti
fuente
1

Como estoy usando Python 3.7 en Ubuntu, tuve que usar:

sudo apt-get install python3.7-tk
Juan
fuente
0

Tal vez instaló Python desde la fuente. En este caso, puede recompilar python con tcl / tk compatible.

  1. Cumpla e instale tcl / tk desde http://www.tcl.tk/software/tcltk/download.html , supongo que instaló Python en /home/xxx/local/tcl-tk/.
# install tcl
wget -c https://prdownloads.sourceforge.net/tcl/tcl8.6.9-src.tar.gz
tar -xvzf tcl8.6.9-src.tar.gz
cd tcl8.6.9
./configure --prefix=/home/xxx/local/tcl-tk/
make
make install

# install tk
wget -c https://prdownloads.sourceforge.net/tcl/tk8.6.9.1-src.tar.gz
tar -xvzf tk8.6.9.1-src.tar.gz
cd tk8.6.9.1
./configure --prefix=/home/xxx/local/tcl-tk/
make
make install
  1. Vuelva a compilar Python con tcl / tk compatible, por ejemplo:
# download the source code of python and decompress it first.

cd <your-python-src-dir>
./configure --prefix=/home/xxx/local/python \
 --with-tcltk-includes=/home/xxx/local/tcl-tk/include \
 --with-tcltk-libs=/home/xxx/local/tcl-tk/lib
make 
make install
qi yuan
fuente