我正在尝试创建一个使用 PyGTK 制作 GUI 的 Python 应用程序的可执行文件。我有一个使用 Pyinstaller 的完善的自动化构建过程,它对我以前的应用程序有用。只需说它使用 32 位 Python 2.7 调用通常的 Makespec.py 和 Build.py,并为 32 位配置 Pyinstaller。生成的 32 位应用程序在我的机器和另一台运行 Windows 7 64 位的机器上运行良好,但在 32 位 Windows XP 上失败并出现以下错误:
C:\OutNav_0_64\OutNav_0.64>outnav
Traceback (most recent call last):
File "<string>", line 23, in <module>
File "C:\Pyinstaller-1.5\iu.py", line 436, in importHook
File "C:\Pyinstaller-1.5\iu.py", line 521, in doimport
File "C:\Users\462974\Documents\Local Sandbox\tools\utilities\Oni\build\pyi.win32\OutNav\outPYZ1.pyz/gtk", line 40, in
<module>
File "C:\Pyinstaller-1.5\iu.py", line 477, in importHook
File "C:\Pyinstaller-1.5\iu.py", line 495, in doimport
File "C:\Pyinstaller-1.5\iu.py", line 297, in getmod
File "C:\Pyinstaller-1.5\archive.py", line 468, in getmod
File "C:\Pyinstaller-1.5\iu.py", line 109, in getmod
ImportError: DLL load failed: The specified procedure could not be found.
奇怪的是,我的机器上没有 C:\Pyinstaller-1.5 目录或遇到错误的那个。我不知道它为什么试图从这个不存在的目录运行代码,或者丢失的 DLL 是什么。谁能帮我将 PyGTK 折叠到我的应用程序中?
注意:跟踪的第一行,我的程序中的第 23 行,是
import gtk
更新:我的经理在 64 位 Windows XP 上成功运行了它。更新 2:他弄错了,它是 64 位 Windows 7。在他的 Windows XP 安装上也有同样的问题。
此外,在它失败的原始机器上,从可执行文件的目录中,我这样做了:
>>> import imp
>>> fp = open('gtk._gtk.pyd', 'rb')
>>> mod = imp.load_module('gtk._gtk', fp, 'gtk._gtk.pyd', ('.pyd', 'rb', 3))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: DLL load failed: A dynamic link library (DLL) initialization routine failed.