0

我正在尝试创建一个使用 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.
4

1 回答 1

3

据我所知,Windows 7 上 pyinstaller 生成的 .pyd 文件(格式为 .DLL 文件)与 Windows XP 不兼容。我的解决方案是简单地在 Windows XP 机器上重新创建我的构建过程,这让我很满意。

于 2012-07-19T13:37:01.263 回答