+--------+-----------------------------------+
| OS | Ubuntu 12.04 |
+--------+-----------------------------------+
| Python | 2.7, 3.2 and source installed 3.6 |
+--------+-----------------------------------+
由于有 2 个版本的 Python 3,因此从存储库安装的任何内容都不适用于 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 进入了 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。
新的更合适的问题是如何从 tcl/tk 构建 _tkinter.cpython-36m-i386-linux-gnu.so
?
注意:我确实安装了 tcl/tk,我已经使用 tclsh 和 wish 确认了这一点。
原文由 lapin 发布,翻译遵循 CC BY-SA 4.0 许可协议
从终端运行:
或者完全重新安装: