Tkinter 和 python3.5 的导入错误

Posted

技术标签:

【中文标题】Tkinter 和 python3.5 的导入错误【英文标题】:Import error with Tkinter and python3.5 【发布时间】:2017-01-30 02:58:35 【问题描述】:

我在使用 python3.5 运行 matplotlib.pyplot 和 tkinter 时遇到问题。我在 Ubuntu 12.04.5 LTS 上。当我输入 dpkg -l python3-tk 时,我看到安装了 python3-tk。我还应该如何进行故障排除?

python3-tk 是否只适用于 python3.2 而不是 python3.5?

下面的示例使用 python3.2 与 python3.5

machine:~$ /usr/bin/python3
Python 3.2.3 (default, Jun 18 2015, 21:46:58)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import tkinter
>>> exit()

machine:~$ /usr/bin/python3.5
Python 3.5.2 (default, Jul 17 2016, 17:38:18)
[GCC 4.6.3] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tkinter
Traceback (most recent call last):
  File "/usr/lib/python3.5/tkinter/__init__.py", line 36, in <module>
    import _tkinter
ImportError: No module named '_tkinter'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.5/tkinter/__init__.py", line 38, in <module>
    raise ImportError(str(msg) + ', please install the python3-tk package')
ImportError: No module named '_tkinter', please install the python3-tk package

python3-tk 已安装

machine:~$ dpkg -l python3-tk
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                         Version                      Description
    +++-============================-============================-

========================================================================
ii  python3-tk                   3.2.3-1                      Tkinter - Writing Tk applications with Python 3.x

【问题讨论】:

我怀疑从 _tkinter.c 编译而来的 _tkinter.so 位于 /usr/bin/python3 中的某个位置,并且它也需要位于 /usr/bin/python3.5 中的相应位置.是否需要为 3.5 重新编译(如 Windows 上的情况)或只是复制,我不知道。 【参考方案1】:

我尝试在 ubuntu16.02 中使用这个命令,它可以工作

sudo apt-get install python3.5-tk

默认情况下我安装了python2.7。你可以参考这个link

【讨论】:

【参考方案2】:

将 matplotlib 后端更改为 'agg' 或其他一些非交互式选项。类似于以下内容:

matplotlib.use('agg')

More info here(在 Docker 的上下文中,我遇到了这个问题并成功解决了它):

【讨论】:

【参考方案3】:
sudo apt-get install python3-tk

此命令将为您的默认 python3 安装 tkinter,因此 python3.5 ImportError。

python3.5可以运行以下命令安装

sudo apt-get install python3.5-tk

【讨论】:

在我的情况下,我得到了错误 E: Package 'python3.5-tk' has no installation Candidate。 最后,我通过将我的 python 3.5 升级到 3.6 来修复。 【参考方案4】:

python3-tk 库安装在 3.2 版本下,而不是 3.5。 Python3-tk 被卸载,python3.5-tk 被安装了

【讨论】:

以上是关于Tkinter 和 python3.5 的导入错误的主要内容,如果未能解决你的问题,请参考以下文章

Jupyter vs IPython:Matplotlib - 没有名为 Tkinter 的模块

导入错误:没有名为 tkinter 的模块 [重复]

导入错误:没有名为“Tkinter”的模块 [重复]

[小菜随笔]python tkinter实现简单的ping命令

在 virtualenv 中使用 python3.5 导入火炬时出现分段错误(核心转储)

Python3 - tkinter 导入和使用模块