我在这上面花了几个小时。似乎我们在 Linux 上的工作是调试在分散的发行版中不起作用的脚本,而不是完成工作。
Setup.py 试图找到它需要的东西并构建用于包装某些依赖项的 c 模块,如果它可以找到它需要的东西。这使得脚本相对于路径和文件名非常脆弱。
虽然很难从 .py 源中分辨出来,但对于 tkinter,我们似乎需要 tcl、tk 和 tix。这些的最新版本都已安装。我可以验证这一点,因为 SUSE 发行版 imports_tkinter 和 Tkinter 模块附带的 Python 2.6 可以正确运行测试脚本。
该脚本似乎需要找到这些库。我安装了 32 位和 64 位。所以,这些库存在: 32bit 64bit 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 也有同样的问题:它不会构建。一心一意。
谢谢你的帮助。