Erro matplotlib - nenhum módulo chamado tkinter


194

Tentei usar o pacote matplotlib via Pycharm IDE no Windows 10. quando executo este código:

from matplotlib import pyplot

Estou tendo o erro a seguir:

ImportError: No module named 'tkinter'

Eu sei que no python 2.x era chamado Tkinter, mas esse não é o problema - eu apenas instalei um novo python 3.5.1.

EDIT: além disso, também tentei importar 'tkinter' e 'Tkinter' - nenhum deles funcionou (ambos retornaram a mensagem de erro que mencionei).


Você importou o tkinter por import Tkinterou import tkinter?
Avión

1
sim, esqueci de mencionar que ... recebi a mesma mensagem de erro
noamgot 31/03/16

ImportError: No module named '_tkinter', please install the python3-tk package?
knh170

@ knh170 não, simplesmente a mensagem mostrada no meu post original.
noamgot

4
Parece que você instalação personalizada usada .Rerun o instalador python, pressione modificar e, em seguida, carrapato td / tk e IDLE
omilus

Respostas:


221
sudo apt-get install python3-tk

Então,

>> import tkinter # all fine

Editar :

Para Windows, acho que o problema é que você não instalou o pacote completo do Python. Como o Tkinter deve ser enviado com o Python pronto para uso. Consulte: http://www.tkdocs.com/tutorial/install.html

Eu sugiro instalar o ipython , que fornece shell poderoso e pacotes necessários também.


ESTÁ FUNCIONANDO! obrigado! (Eu instalei anaconda através do link que você colocar no seu post)
noamgot

3
se você estiver em um CentOS caixa, o comando ésudo yum install python36u-tkinter.x86_64
n1c9

Estou usando pycharm e recebi o mesmo erro em relação ao pacote ausente. Depois de instalar o pacote tkinter, o matplotlib funcionou bem. Obrigado @ knh170 #
debaonline4u

Trabalhou para mim com o Ubuntu 18.04 usando python3 em venv. Basta instalá-lo: sudo apt-get install python3-tk Então você pode testar se a partir de casca python3: de matplotlib importação pyplot
serfer2

1
@ knh170 Podemos instalar o tkinter usando pip? Não consigo pesquisar nada relacionado a isso #
Scott Yang

99

você pode usar

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

se você não quiser usar tkinternada.

Também não se esqueça de usar %matplotlib inlinena parte superior do seu notebook, se estiver usando um.

EDIT: aggé um backend diferente, como tkinterpara o matplotlib.


1
Isso é legal porque, devido ao trabalho com um servidor, não preciso e tenho o X11, mas alguns programas que eu instalei dependem do matplotlib.
precisa saber é o seguinte

2
Fantástico! No caso de alguém está se perguntando como isso funciona
Matt

2
esta solução trabalho does'nt se você quiser trama algo
Beyhan Gül

4
Apenas para adicionar a esta resposta: aggé um back-end que não é da GUI, portanto plt.show()não terá nenhum efeito. Mas você ainda pode fazer plt.savefig(filename)e examinar o arquivo para depuração rápida.
Nico

1
Economiza tempo ao lidar com esse erro do tkinter.
annoying_squid

35

No Centos, os nomes e comandos do pacote são diferentes. Você precisará fazer:

sudo yum install tkinter

Para consertar o problema.


29

Para usuários do Windows , não há necessidade de baixar o instalador novamente. Faça o seguinte:

  1. Vá para o menu Iniciar, digite Programas e Recursos ,
  2. Selecione a versão do Python (para mim é o Python 3.6.5 (64 bits) ),
  3. Clique com o botão direito, pressione Alterar ,
  4. Clique em Modificar ,
  5. Selecione td / tk e IDLE (que instala o tkinter) e clique em Avançar .

Aguarde a instalação e pronto.


4
Obrigado. É a resposta mais útil e correta, entre outras. (Usuários para Sistema Operacional Windows, claro)
Ruslan K.

20

Quase todas as respostas que procurei por esse problema dizem que o Python no Windows vem com o tkinter e o tcl já instalados, e não tive sorte em tentar fazer o download ou instalá-los usando o pip ou o site actviestate.com. Acabei descobrindo que quando estava instalando o python usando o instalador binário, desmarquei o módulo relacionado ao TCL e ao tkinter. Então, eu executei o instalador binário novamente e optei por modificar minha versão do python selecionando esta opção. Não há necessidade de fazer nada manualmente então. Se você for ao seu terminal python, os seguintes comandos deverão mostrar a versão do tkinter instalada com o seu Python:

import tkinter
import _tkinter
tkinter._test()

1
Corrigir. Uma instalação do Windows é o único sistema em que isso pode acontecer - como foi o meu caso. +1. Isso certamente vale a pena notar para usuários com instalações do Windows.
Marcushobson 18/04

18

Se você estiver usando o fedora, instale primeiro o tkinter

sudo dnf install python3-tkinter

Não acho que você precise importar o tkinter posteriormente. Também sugiro que você use o virtualenv

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

E adicione os pacotes necessários usando pip


10

No CentOS 7 e Python 3.4, o comando é sudo yum install python34-tkinter

No Redhat 7.4 com Python 3.6, o comando é sudo yum install rh-python36-python-tkinter


3
No Centos 7 e Python 3.6, o comando ésudo yum install python36u-tkinter.x86_64
Rob Hall

8

Para usuários do Windows, execute novamente o instalador. Selecione Modificar. Marque a caixa para tcl / tk e IDLE. A descrição para isso diz "Instala o tkinter"


8

No Ubuntu, início de 2018, não há python3.6-tkdistribuições normais do ubuntu (xenial / 16.04), portanto, mesmo se você tiver versões anteriores, python-tkisso não funcionará.

Minha solução foi usar tudo configurado com 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

E agora matplotlibpode encontrar tkinter.

EDIT :

Eu só precisava do 3.6, afinal, e o truque era:

sudo apt install tk-dev

e depois reconstrua o python3.6, depois tk-dev , por exemplo:

./configure
make
make install

3
UPDATE: Agora não é um python3.6-tk! sudo apt install python3.6-tktrabalha aqui :)
Luis

4

Se você estiver usando python 3.6, isso funcionou para mim:

sudo apt-get install python3.6-tk

ao invés de

sudo apt-get install python3-tk

O que funciona para outras versões do python3


4
Não tenho um pacote python3.6-tk no ubuntu 16.04.
Brooks

@brooks, same here
URL livre,

Também não existia no Centos
Rob Hall

É deve estar disponível agora no Ubuntu 16.04
Yu-Lin Chen

3

Para os pobres como eu usando python 3.7 . Você precisa do python3.7-tkpacote.

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-tkestá instalado. Mas não 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) ...

Depois de instalá-lo, tudo de bom.

$ 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()

2

No CentOS 6.5 com python 2.7, eu precisava fazer: yum install python27-tkinter


1
Estou recebendo "Nenhum pacote python27-tkinter disponível."
proutray

2

Às vezes (por exemplo, na distribuição osgeo4w), o tkinter é removido.

Tente alterar o back-end do matplotlib editando o arquivo matplotlibrc localizado na [python install dir]/matplotlib/mpl-data/matplotlibrcalteração do parâmetro back-endbackend: TkAgg para algo semelhante backend: Qt4Aggao descrito aqui: http://matplotlib.org/faq/usage_faq.html#what-is-a-backend


1

Desde que eu estou usando Python 3.7 no Ubuntu, eu tive que usar:

sudo apt-get install python3.7-tk

0

Talvez você tenha instalado o python da fonte. Nesse caso, você pode recompilar o python com o suporte a tcl / tk.

  1. Conclua e instale o tcl / tk em http://www.tcl.tk/software/tcltk/download.html , suponho que você tenha instalado o python em /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. Recompile o python com suporte a tcl / tk, por exemplo:
# 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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.