matplotlib错误-没有名为tkinter的模块


194

当我运行以下代码时,我尝试通过Windows 10上的Pycharm IDE使用matplotlib软件包:

from matplotlib import pyplot

我收到以下错误:

ImportError: No module named 'tkinter'

我知道在python 2.x中它叫做Tkinter,但这不是问题-我刚安装了一个全新的python 3.5.1。

编辑:此外,我还尝试导入'tkinter'和'Tkinter'-这些都不起作用(都返回了我提到的错误消息)。


您是否通过import Tkinter或导入了tkinter import tkinter
艾维

1
是的,忘了提及......得到了相同的错误消息
noamgot

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

@ knh170不,只是我原始帖子中显示的消息。
noamgot

4
看起来像您使用的自定义安装。重新运行python安装程序,按Modify,然后在td / tk和IDLE上打勾
忽略

Answers:


221
sudo apt-get install python3-tk

然后,

>> import tkinter # all fine

编辑

对于Windows,我认为问题是您没有安装完整的Python软件包。由于Tkinter应该随Python一起提供。请参阅:http : //www.tkdocs.com/tutorial/install.html

我建议安装ipython,它也提供功能强大的shell和必要的软件包。


这是工作!谢谢!(我通过发布在您帖子中的链接安装了anaconda)
noamgot

3
如果您在CentOS机器上,则命令为sudo yum install python36u-tkinter.x86_64
n1c9 '18

我正在使用pycharm,关于包裹丢失我也遇到了同样的错误。安装tkinter软件包后,matplotlib运行正常。谢谢@ knh170
debaonline4u

在venv中使用python3在Ubuntu 18.04上为我工作。只需安装它:sudo apt-get install python3-tk然后您可以从python3 shell中进行测试:从matplotlib导入pyplot
serfer2 '18

1
@ knh170我们可以使用pip安装tkinter吗?我无法搜索与此相关的任何东西
Scott Yang

99

您可以使用

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

如果您tkinter根本不想使用。

%matplotlib inline如果要使用笔记本,也不要忘记在笔记本顶部使用。

编辑:agg是不同的后端,如tkintermatplotlib。


1
这很好,因为由于不需要服务器,所以我拥有X11,但是我安装的某些程序依赖于matplotlib。
rien333

2
太棒了!如果你想知道这是如何工作的
马特

2
如果您想绘制某些东西,此解决方案将不起作用
BeyhanGül19年

4
只是添加到此答案:agg是非GUI后端,因此plt.show()不会有任何效果。但是您仍然可以plt.savefig(filename)查看该文件以进行快速调试。
Nico

1
为我节省了处理此tkinter错误的时间。
annoying_squid

35

在Centos上,软件包名称和命令是不同的。您需要执行以下操作:

sudo yum install tkinter

解决问题。


29

对于Windows用户,无需再次下载安装程序。只需执行以下操作:

  1. 进入开始菜单,输入“ 程序和功能”
  2. 选择Python版本(对我来说是Python 3.6.5(64位)),
  3. 右键单击,按更改
  4. 点击修改
  5. 选择td / tk和IDLE(将安装tkinter),然后单击下一步

等待安装,您就完成了。


4
谢谢。这是最有用和正确的答案。(当然,对于Windows OS用户)
Ruslan K.19年

20

我搜索此问题的几乎所有答案都说Windows上的Python随附了tkinter和tcl,并且我没有运气尝试使用pip或actviestate.com网站下载或安装它们。我最终发现,当我使用二进制安装程序安装python时,我没有选中与TCL和tkinter相关的模块。因此,我再次运行二进制安装程序,并选择了这次选择此选项来修改我的python版本。然后,无需手动执行任何操作。如果您转到python终端,则以下命令应显示与Python一起安装的tkinter版本:

import tkinter
import _tkinter
tkinter._test()

1
正确。Windows安装是可能发生这种情况的唯一系统-就像我自己一样。+1。对于安装Windows的用户来说,这当然是值得注意的。
marcushobson

18

如果您使用的是fedora,请先安装tkinter

sudo dnf install python3-tkinter

我不认为您以后需要导入tkinter我也建议您使用virtualenv

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

并使用pip添加必要的软件包


10

在CentOS 7和Python 3.4上,命令是 sudo yum install python34-tkinter

在具有Python 3.6的Redhat 7.4上,命令为 sudo yum install rh-python36-python-tkinter


3
在Centos 7和Python 3.6上,命令是sudo yum install python36u-tkinter.x86_64
Rob Hall

8

对于Windows用户,请重新运行安装程序。选择修改。选中tcl / tk和IDLE框。此说明说“ Installs tkinter”


8

在Ubuntu上,2018年初,python3.6-tkUbuntu的(xenial / 16.04)正态发行版上python-tk没有任何版本,因此即使您拥有较早的版本也无法使用。

我的解决方案是使用设置所有内容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

现在matplotlib可以找到tkinter

编辑

毕竟我只需要3.6,诀窍是:

sudo apt install tk-dev

然后 之后重建python3.6 tk-dev,例如:

./configure
make
make install

3
更新:现在有IS一个python3.6-tksudo apt install python3.6-tk在这里工作:)
路易斯

4

如果您使用的是python 3.6,则对我有用:

sudo apt-get install python3.6-tk

代替

sudo apt-get install python3-tk

适用于其他版本的python3


4
我在Ubuntu 16.04上没有python3.6-tk软件包。
布鲁克斯

@brooks,这里相同
免费网址

在Centos上也不存在
Rob Hall

它应该现在在ubuntu 16.04上可用
Yu-Lin Chen

3

对于像我这样的可怜人,使用python 3.7。您需要python3.7-tk包装。

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

注意。python3-tk已安装。但是不是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) ...

安装后,一切都很好。

$ 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

在带有python 2.7的CentOS 6.5上,我需要这样做: yum install python27-tkinter


1
我收到“没有可用的python27-tkinter软件包。”
proutray


1

由于我在Ubuntu上使用Python 3.7,因此必须使用:

sudo apt-get install python3.7-tk

0

也许您从源代码安装了python。在这种情况下,您可以在支持tcl / tk的情况下重新编译python。

  1. 从以下位置编译并安装tcl / tk http://www.tcl.tk/software/tcltk/download.html,我假设您在安装了python /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. 使用支持的tcl / tk重新编译python,例如:
# 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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.