Python版本与Tcl/Tk兼容性

2 投票
2 回答
2095 浏览
提问于 2025-04-16 14:25

我安装了Tcl和Tk,但遇到了一个非常常见的错误:“没有名为_tkinter的模块”。

我在终端输入'python'命令时,运行的是Python 2.4.2版本,但Synaptic显示我安装的是2.6.6版本。我甚至尝试安装3.0版本,但也失败了。

我自己配置并构建了Tcl/Tk的压缩包,也尝试过使用Synaptic提供的安装包。

“wish”和“tclsh”这两个命令都能正常工作,所以我知道这些模块是安装好的,但我就是无法让Python识别它们。而且,我也搞不清楚应该使用哪个版本的Python,以及如何让我的终端命令使用那个版本。

我没有看到可以卸载2.4.2的选项,如果我卸载2.6.6,似乎会把我其他大部分的包都删掉(虽然我知道这有点夸张)。

我真的不知道接下来该怎么办,所以任何建议都会非常感激。

更新:

我不得不重新安装python-tk这个包,现在2.6版本能成功导入它。现在我只需要弄清楚如何卸载2.4版本,以免以后出问题。

2 个回答

1

给那些来到这个页面的人更新一下信息,关于Python 3+(就像我用的那样)。要在基于Debian的Linux(比如Ubuntu)上运行 tkinter,你需要安装 python3,还有 python3-tk(这个不在库列表里):

sudo apt-get install python3
sudo apt-get install python3-tk

另外,脚本的第一行需要写这个:

#! /usr/bin/python3

至少这是我解决这个问题的方法。

1

这里有几个命令可以帮助你诊断问题。

首先,试着在命令行中运行 python 命令,后面加上版本号。因为你的系统上安装了 2.6.6 版本,所以你可以运行 python2.6 来使用这个版本:

(type 'python' and hit TAB to see possible completions)

% python<tab>
python
python2.6
python3.1

如果你还是无法运行 TK,找一下 _tkinter.so 模块在你系统中的位置。可能是 2.6.6 的解释器找不到它。以下是 Ubuntu Lucid 上通过 python-tk 包安装时的路径:

% find /usr -name '_tkinter*'
/usr/lib/python2.6/lib-dynload/_tkinter.so

撰写回答