2011-08-29 107 views
0

我使用py2exe從我的Python + Gtk應用程序創建了一個exe文件。有了windwos 7,它可以工作,但我無法在windwos XP下運行。我得到以下錯誤:在Windows 7下運行py2exe,無法在Windows XP下優於文件

Traceback (most recent call last): 
    File "debug4iConnect.py", line 1, in <module> 
    File "startApp.pyc", line 1, in <module> 
    File "gtk\__init__.pyc", line 40, in <module> 
    File "gtk\_gtk.pyc", line 12, in <module> 
    File "gtk\_gtk.pyc", line 10, in __load 
ImportError: DLL load failed: Impossibile trovare la procedura specificata. 

我試圖尋找失蹤的使用依賴學步車DLL和收到此消息:

LoadLibraryA("c:\......\zlib.pyd") returned NULL. Error: Impossibile trovare il modulo specificato (126). 

LoadLibraryExA("c:\.....\gtk._gtk.pyd", 0x00000000, LOAD_WITH_ALTERED_SEARCH_PATH) returned NULL. Error: Impossibile trovare la procedura specificata (127). 

"Impossibile trovare la procedura specificata" means: Impossible to find specified procedure. 
"Impossibile trovare il modulo specificato" means: Impossible to find the specified module. 

此線程接縫是一個類似的問題,但解決方案不爲我工作:Py2exe - win32api.pyc ImportError DLL load failed

有人知道我能做什麼嗎?

更新: 我dependencywalker再次嘗試,發現了一些丟失的dll:

API-MS-WIN-SECURITY-BASE-L1-1-0.DLL 
API-MS-WIN-SECURITY-LSALOOKUP-L1-1-0.DLL 
API-MS-WIN-SERVICE-MANAGEMENT-L1-1-0.DLL 
API-MS-WIN-SERVICE-MANAGEMENT-L2-1-0.DLL 
API-MS-WIN-SERVICE-WINSVC-L1-1-0.DLL 
CRYPTBASE.DLL 
MSJAVA.DLL, 

我加入他們,現在我得到這個錯誤:

GetProcAddress(0x00000000, "CtfImmCoUninitialize") called from "c:\windows\system32 
\MSCTF.DLL" at address 0x746B279F and returned NULL. Error: Impossibile trovare la procedura specificata (127). 
GetProcAddress(0x00000000, "CtfImmLastEnabledWndDestroy") called from "c:\windows\system32\MSCTF.DLL" at address 0x746B27DC and returned NULL. Error: Impossibile trovare la procedura specificata (127). 
GetProcAddress(0x00000000, "CtfImmSetCiceroStartInThread") called from "c:\windows\system32\MSCTF.DLL" at address 0x746B281F and returned NULL. Error: Impossibile trovare la procedura specificata (127). 
GetProcAddress(0x00000000, "CtfImmIsCiceroStartedInThread") called from "c:\windows\system32\MSCTF.DLL" at address 0x746B2864 and returned NULL. Error: Impossibile trovare la procedura specificata (127). 
GetProcAddress(0x00000000, "CtfImmIsCiceroEnabled") called from "c:\windows\system32\MSCTF.DLL" at address 0x746B28A9 and returned NULL. Error: Impossibile trovare la procedura specificata (127). 
GetProcAddress(0x00000000, "CtfImmIsTextFrameServiceDisabled") called from "c:\windows\system32\MSCTF.DLL" at address 0x746B28E5 and returned NULL. Error: Impossibile trovare la procedura specificata (127). 
GetProcAddress(0x00000000, "CtfImmEnterCoInitCountSkipMode") called from "c:\windows\system32\MSCTF.DLL" at address 0x746B292C and returned NULL. Error: Impossibile trovare la procedura specificata (127). 
GetProcAddress(0x00000000, "CtfImmLeaveCoInitCountSkipMode") called from "c:\windows\system32\MSCTF.DLL" at address 0x746B2972 and returned NULL. Error: Impossibile trovare la procedura specificata (127). 
GetProcAddress(0x00000000, "ImmGetDefaultIMEWnd") called from "c:\windows\system32\MSCTF.DLL" at address 0x746B29B6 and returned NULL. Error: Impossibile trovare la procedura specificata (127). 
GetProcAddress(0x00000000, "ImmReleaseContext") called from "c:\windows\system32\MSCTF.DLL" at address 0x746B29EF and returned NULL. Error: Impossibile trovare la procedura specificata (127). 
GetProcAddress(0x00000000, "ImmNotifyIME") called from "c:\windows\system32\MSCTF.DLL" at address 0x746B2A29 and returned NULL. Error: Impossibile trovare la procedura specificata (127). 
GetProcAddress(0x00000000, "ImmSetConversionStatus") called from "c:\windows\system32\MSCTF.DLL" at address 0x746B2A5C and returned NULL. Error: Impossibile trovare la procedura specificata (127). 
GetProcAddress(0x00000000, "ImmGetConversionStatus") called from "c:\windows\system32\MSCTF.DLL" at address 0x746B2A9A and returned NULL. Error: Impossibile trovare la procedura specificata (127). 
GetProcAddress(0x00000000, "ImmGetProperty") called from "c:\windows\system32\MSCTF.DLL" at address 0x746B2AD6 and returned NULL. Error: Impossibile trovare la procedura specificata (127). 
GetProcAddress(0x00000000, "ImmGetOpenStatus") called from "c:\windows\system32\MSCTF.DLL" at address 0x746B2B0A and returned NULL. Error: Impossibile trovare la procedura specificata (127). 
GetProcAddress(0x00000000, "ImmGetContext") called from "c:\windows\system32\MSCTF.DLL" at address 0x746B2B40 and returned NULL. Error: Impossibile trovare la procedura specificata (127). 
GetProcAddress(0x00000000, "ImmSetOpenStatus") called from "c:\windows\system32\MSCTF.DLL" at address 0x746B2B75 and returned NULL. Error: Impossibile trovare la procedura specificata (127). 
GetProcAddress(0x00000000, "ImmInstallIMEA") called from "c:\windows\system32\MSCTF.DLL" at address 0x746B2BAC and returned NULL. Error: Impossibile trovare la procedura specificata (127). 
GetProcAddress(0x00000000, "ImmGetDescriptionA") called from "c:\windows\system32\MSCTF.DLL" at address 0x746B2BE2 and returned NULL. Error: Impossibile trovare la procedura specificata (127). 
GetProcAddress(0x00000000, "ImmGetDescriptionW") called from "c:\windows\system32\MSCTF.DLL" at address 0x746B2C1A and returned NULL. Error: Impossibile trovare la procedura specificata (127). 
GetProcAddress(0x00000000, "ImmGetIMEFileNameA") called from "c:\windows\system32\MSCTF.DLL" at address 0x746B2C52 and returned NULL. Error: Impossibile trovare la procedura specificata (127). 
GetProcAddress(0x00000000, "ImmGetIMEFileNameW") called from "c:\windows\system32\MSCTF.DLL" at address 0x746B2C8A and returned NULL. Error: Impossibile trovare la procedura specificata (127). 
GetProcAddress(0x00000000, "ImmSetHotKey") called from "c:\windows\system32\MSCTF.DLL" at address 0x746B3168 and returned NULL. Error: Impossibile trovare la procedura specificata (127). 

當我執行的應用程序,我得到了錯誤:

Fatal Python error: Interpreter not initialized (version mismatch?) 

當我再次刪除zlib.pyd時,我得到0123上面的。我發現我的zlib.pyd來自python2.4,並且沒有2.7的zlib.pyd,它包含在python27.dll中。它是否正確?

回答

0

您可以使用dependency walker找到丟失的DLL。

可能需要在XP機器上安裝Visual Studio可重新分發版。

+0

嗨,依賴性沃克輸出我上面postet,我安裝了Visual Studio可再分發,沒有這個應用程序無法啓動,我只得到一條消息「無法啓動應用程序」 – stefanr

+0

抱歉依賴沃克。你看過http://www.py2exe.org/index.cgi/Py2exeAndPyGTK嗎? – luc

+0

我再次嘗試了依賴關係的步行者,發現了一些其他的東西,我編輯了主帖, 是的,我在py2exe.org上的py2exe教程之後,在windows7下創建它。 – stefanr

1

解決:我設置 "bundle_files": 3"skip_archive": True 現在的作品

0

我也有這個問題。對我來說,解決辦法是從集合排除MSWSOCK.dllPOWRPROF.dll庫:

setup(
    # other options ommited... 
    options={ 
     "py2exe":{ 
      "dll_excludes": ["POWRPROF.dll", "MSWSOCK.dll"] 
     } 
    }, 
) 

這也擺脫了所有的MS_API _ * DLL文件。

相關問題