我正在尝试创建一个Python应用程序的可执行文件,它使用PyGTK来创建GUI。我有一个使用Pyinstaller的完善的自动化构建过程,这对我以前的应用程序有用。可以这么说它用32位Python 2.7调用通常的Makespec.py和Build.py,Pyinstaller配置为32位。生成的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.
答案 0 :(得分:3)
据我所知,Windows 7上由pyinstaller生成的.pyd文件(格式为.DLL文件)与Windows XP不兼容。我的解决方案是简单地在Windows XP机器上重新创建我的构建过程,这让我满意。