关于python:matplotlib错误-没有名为tkinter的模块

matplotlib error - no module named tkinter

我试图在Windows 10上通过Pycharm IDE使用matplotlib软件包。
当我运行此代码时:

1
from matplotlib import pyplot

我收到以下错误:

1
ImportError: No module named 'tkinter'

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

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


1
sudo apt-get install python3-tk

然后,

1
>> import tkinter # all fine

编辑:

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

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


您可以使用

1
2
3
import matplotlib
matplotlib.use('agg')
import matplotlib.pyplot as plt

如果您根本不想使用tkinter

另外,如果使用一个,请不要忘记在笔记本顶部使用%matplotlib inline

编辑:agg是不同的后端,例如tkinter对于matplotlib。


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

1
sudo yum install tkinter

解决问题。


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

1
2
3
import tkinter
import _tkinter
tkinter._test()


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

1
sudo dnf install python3-tkinter

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

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

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


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

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


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

我的解决方案是使用python 3.5设置所有内容:

1
2
3
4
 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,而诀窍是:

1
sudo apt install tk-dev

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

1
2
3
./configure
make
make install


对于Windows用户,请重新运行安装程序。选择修改。选中tcl / tk和IDLE框。此说明显示为" Installing tkinter"


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

  • 转到开始菜单,键入程序和功能,
  • 选择Python版本(对我来说是Python 3.6.5(64位)),
  • 右键单击,按更改,
  • 点击修改,
  • 选择td / tk和IDLE(将安装tkinter),然后单击下一步。
  • 等待安装,您就完成了。


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

    1
    sudo apt-get install python3.6-tk

    代替

    1
    sudo apt-get install python3-tk

    适用于其他版本的python3


    有时(例如在osgeo4w发行版中)tkinter被删除。

    尝试将位于/matplotlib/mpl-data/matplotlibrc中的matplotlib后端编辑matplotlibrc文件更改为如下所示,将backend参数从backend: TkAgg更改为类似backend: Qt4Agg的其他内容:http://matplotlib.org/faq/usage_faq.html#what-is-a -backend


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


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

  • 从http://www.tcl.tk/software/tcltk/download.html编译并安装tcl / tk,我假设您在/home/xxx/local/tcl-tk/处安装了python。
  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    # 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
  • 使用支持的tcl / tk重新编译python,例如:
  • 1
    2
    3
    4
    5
    6
    7
    8
    # 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

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

    1
    sudo apt-get install python3.7-tk