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 的模块
[小菜随笔]python tkinter实现简单的ping命令