我正在尝试使用py2exe来分发我编写的python应用程序.一切似乎都没问题,但是当我在另一台机器上运行时它失败并出现以下错误:
Traceback (most recent call last):
File "application.py", line 12, in <module>
File "win32api.pyc", line 12, in <module>
File "win32api.pyc", line 10, in __load
ImportError: DLL load failed: The specified procedure could not be found.
Run Code Online (Sandbox Code Playgroud)
我搜索了这个并没有找到很多,但尝试了以下建议无济于事:
在win32api之前导入pywintypes和pythoncom(在py2exe的setup.py和主应用程序中)在setup.py中添加了一些代码 -
# ModuleFinder can't handle runtime changes to __path__, but win32com uses them
import pywintypes
import pythoncom
import win32api
try:
# if this doesn't work, try import modulefinder
import py2exe.mf as modulefinder
import win32com
for p in win32com.__path__[1:]:
modulefinder.AddPackagePath("win32com", p)
for extra in ["win32com.shell"]: #,"win32com.mapi"
__import__(extra)
m = sys.modules[extra]
for p in m.__path__[1:]:
modulefinder.AddPackagePath(extra, p)
except ImportError:
# no build path setup, no worries.
pass
Run Code Online (Sandbox Code Playgroud)
我对这一切都很陌生,所以任何帮助都会非常感激
谢谢
乔恩
Wim*_*Wim 29
当程序包在Vista上构建但在XP上执行时,我已经看到了这个问题.原来,这个问题是该py2exe误加powrprof.dll,并mswsock.dll在包装上.Windows XP虽然包含这些文件的副本,但无法加载随应用程序安装的Vista.
从包中删除它们就可以了,你可以通过将它添加到optionsdict中来轻松完成setup.py
'dll_excludes': [ "mswsock.dll", "powrprof.dll" ]
Run Code Online (Sandbox Code Playgroud)