[英]run py2exe under windows 7, can not excecute file under windows XP
我使用py2exe从我的Python + Gtk应用程序创建了一个exe文件。 使用windwos 7可以运行,但是我无法在windwos 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.
我试图使用dependency-walker查找丢失的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加载失败
有人知道我能做什么吗?
更新:我再次尝试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时,出现上面的ImportError
。 我发现我的zlib.pyd来自python2.4,并且不再有2.7的zlib.pyd,它应该包含在python27.dll中。 这个对吗?
解决:我设置了"bundle_files": 3
和"skip_archive": True
现在可以了
我也有这个问题。 对我来说,解决方案是从集合中排除MSWSOCK.dll
和POWRPROF.dll
库:
setup(
# other options ommited...
options={
"py2exe":{
"dll_excludes": ["POWRPROF.dll", "MSWSOCK.dll"]
}
},
)
这也摆脱了所有MS_API _ *。dll文件。
您可以使用依赖项遍历来查找丢失的dll。
可能是您需要在XP计算机上安装Visual Studio可再发行组件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.