Python版本与Tcl/Tk兼容性
我安装了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