0

PyGTKを使用してGUIを作成するPythonアプリケーションの実行可能ファイルを作成しようとしています。以前のアプリケーションで機能していたPyinstallerを使用した、確立された自動ビルドプロセスがあります。Pyinstallerが32ビット用に構成された32ビットPython2.7で通常のMakespec.pyとBuild.pyを呼び出すと言えば十分です。結果の32ビットアプリケーションは、私のマシンとWindows 7 64ビットを実行している別のマシンでは正常に動作しますが、32ビットWindowsXPでは次のエラーで失敗します。

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ビットのWindowsXPで正常に実行しました。更新2:彼は間違っていました。64ビットのWindows7でした。WindowsXPのインストールでも同じ問題が発生します。

また、失敗した元のマシンで、実行可能ファイルのディレクトリから、次のようにしました。

>>> 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ファイルの形式)は、WindowsXPと互換性がありません。私の解決策は、Windows XPマシンでビルドプロセスを再作成することでした。これにより、満足のいく結果が得られました。

于 2012-07-19T13:37:01.263 に答える