我正在尝试在Windows上使用py2exe 0.6.9和Python 2.6.4捆绑Python应用程序。虽然可执行文件在我用来构建它的系统上运行得很好,但是当我尝试在另一个系统上运行它时它会失败:
C:\Documents and Settings\Administrator\Desktop\dist>.\backend.exe install
Traceback (most recent call last):
File "boot_service.py", line 6, in <module>
File "zipextimporter.pyo", line 82, in load_module
File "win32serviceutil.pyo", line 9, in <module>
File "zipextimporter.pyo", line 98, in load_module
ImportError: MemoryLoadLibrary failed loading win32api.pyd
我有一个强烈的预感,我错过了一个库,但我不确定哪个 - 特别是因为依赖检查器没有标记目标系统上缺少任何内容。我该怎么办?
答案 0 :(得分:7)
与https://stackoverflow.com/questions/1979486/py2exe-win32api-pyc-importerror-dll-load-failed相同的问题。
查看setup.py,只是排除了系统中包含的这些dll。
'dll_excludes': [ "mswsock.dll", "powrprof.dll" ]
它会帮助你!
答案 1 :(得分:1)
您可以手动执行dll和依赖项检查。当你生成exe我确定你已经注意到它打印出所需/使用的dll。检查系统,exe不工作的地方,dll是否存在以及它们是否相同。
另一件事。您是将整个dist文件夹复制到系统还是仅复制到exe,因为您需要整个dist文件夹而不仅仅是exe文件。
答案 2 :(得分:1)
您是否在64位/ vista上进行py2exe转换?
我一直在vista64bit上编写我的代码,我创建的.exe文件通常不能在32位XP上运行(这些是我手边的两台机器)。
.exe帮助抛出带有回溯的文本文件,看起来64位窗口使用win32api.dll。我认为这是64位窗口用于复制32位操作系统行为的.dll,因此我只需使用相同的脚本并在32位XP上进行转换。希望有所帮助。
答案 3 :(得分:0)
只为将来会来这里的人。如果您使用任何类型的win32库并且遇到此类错误,您可以执行以下步骤:
示例:
根据以下代码:
import win32crypt
win32crypt.CryptUnprotectData(...)
我使用了CryptUnprotectData函数,所以我搜索了CryptUnprotectData所需的dll,我找到了以下信息enter link description here,你可以看到, 所以我编辑我的setup.py看起来像那样 它完美无缺。
includes = ["win32crypt"]
dll_excludes=["Crypt32.dll"]
setup(
options = {'py2exe': {'bundle_files': 1, 'compressed': True,'dll_excludes': dll_excludes,'includes': includes}})