【发布时间】:2017-07-26 04:05:58
【问题描述】:
+--------+-----------------------------------+
| OS | Ubuntu 12.04 |
+--------+-----------------------------------+
| Python | 2.7, 3.2 and source installed 3.6 |
+--------+-----------------------------------+
由于 Python 3 有 2 个版本,因此从存储库安装的任何内容都不适用于 Python 3.6。存储库中最新版本的 Python 是 3.2,所以我需要源安装或通过 pip3.6。
启动python3.6 后,我尝试import tkinter,出现以下错误。尽管help('modules') 返回了一个包含 tkinter 的模块列表。
import tkinter
ModuleNotFoundError: No module named '_tkinter'
我尝试在python3.2 中做同样的事情,结果没有错误。 tkinter._tkinter 给出了 python3.2 的 tkinter 库的位置
我 cd'd 进入包含所有库文件的 python3.6 目录,并且确实缺少 tkinter.so 目标文件。
如何修复错误?
我想让 tkinter/tkagg 工作,因为似乎所有模块/包都已安装。
在谷歌搜索了一些之后,我发现我需要再次构建python3.6,但这次在运行配置时使用 Tcl/Tk 选项。我宁愿不。从头开始安装python3.6 大约需要 1 小时。
还有其他方法可以告诉python3.6 Tcl/Tk 的位置吗?
问题不在于告诉 python tcl/tk 在哪里。在弄乱了python3.6的源代码,然后比较了python3.6和python3.2之后,我发现tkinter调用的_tkinter不是python文件,它是python在安装过程中构建的.so(共享对象)文件通过使用 gcc 的 setup.py,不知何故可能涉及 distutils。
新的更合适的问题是我如何构建,
_tkinter.cpython-36m-i386-linux-gnu.so 来自 tcl/tk?
注意:我确实安装了 tcl/tk,我已使用 tclsh 确认并希望。
【问题讨论】:
-
试试
from tkinter import * -
刚刚做了,给出了同样的错误。 @johnsonlai 另外,我不会使用 tkinter,matplotlib 是。
-
我知道我应该这样做,@Marvo,但我需要在短时间内完成这项工作。
-
apt get install python3.6-tk
-
@Boki,这样不行。 12.04的ppa最新的python是3.2,deadsnakes的ppa最新的是3.5,只有核心python。为了能够 apt-get,包必须存在于 ppa 中。
标签: python python-3.x tkinter tcl python-3.6