在Suse Linux Server 11.3上安装Python 2.7.2无法找到tkinter依赖项

时间:2011-12-27 22:48:03

标签: python build suse

我花了好几个小时。看起来我们在Linux上的工作就是调试在碎片发行版中不起作用的脚本而不是完成工作。

Setup.py尝试找到它需要的东西,并构建用于包装某些依赖项的c模块,如果它能找到它需要的东西。这使得脚本相对于路径和文件名非常脆弱。

虽然从.py源中很难说,但对于tkinter来说,我们需要tcl,tk和tix。这些都是最新版本。我可以验证这一点,因为SUSE发行版附带的Python 2.6 import_tkinter和Tkinter模块并正确运行测试脚本。

脚本似乎需要找到库。我安装了32位和64位。所以,这些库存在:                     32位64位    libtk8.5.so / usr / lib / usr / lib64    libtcl8.5.so“”

两个路径都包含在Setup.py中的相应搜索列表中。但是,我不认为Setup.py会搜索正确的文件名。它似乎搜索以tk和tcl开头的文件,连接各种不同的版本(包括'8.5')。但是,文件名不以'lib'开头。在我开始篡改之前,Python.org的人们真的搞砸了吗?这似乎不太可能。 SUSE Linux是如此奇怪的发行版?这似乎也不太可能。

我不认为setup.py会查找二进制文件(在运行时看起来很重要......)但它们存在于usr / lib和usr / lib64中。

我能找到的唯一包含文件是tclextend。它是在usr / include中找到的tclextend.h。我找不到tcl或tk的其他.h文件。当然,Python c包装器所需的包含文件随Python 2.7的下载一起提供。

所以,我很有智慧。这是如此巨大的浪费时间。有没有办法跳过构建过程并只是构建tcl / tk支持?我也有与ssl相同的问题:它不会构建。一次一件事。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我找到了许多rpm包的分发点。这使我能够安装单个包,例如tcl的头文件。但是,这是一个糟糕的方法,因为为tkinter构建Python支持的完整依赖层次结构大约有60个包。

我发现操作系统版本11.3的OpenSuSE存储库包含了我需要的所有内容。我的Novell发行版附带了Novell的存储库,几乎排除了所有开发包。

问题解决了。 python的make找到了tkinter的所有先决条件。

很抱歉发布这样一个nube问题。