运行py2exe应用时出现MemoryLoadError

5 投票
4 回答
5427 浏览
提问于 2025-04-15 18:16

我正在尝试使用 py2exe 0.6.9 和 Python 2.6.4 在 Windows 上打包一个 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

我有一种强烈的感觉,我缺少某个库,但我不确定是哪个——尤其是因为依赖检查工具在目标系统上没有标记出任何缺失的东西。我应该怎么做呢?

4 个回答

1

你是在64位的Vista系统上进行py2exe转换吗?

我一直在64位的Vista系统上写代码,而我创建的.exe文件通常在32位的XP系统上无法运行(这就是我手头上有的两台机器)。

这个.exe文件会很贴心地生成一个文本文件,里面有错误追踪信息。看起来64位的Windows使用了win32api.dll。我猜这是一个64位Windows用来模拟32位操作系统行为的.dll文件,所以我就直接在32位的XP上用同样的脚本进行转换。希望这能帮到你。

1

你可以手动检查dll和依赖项。当你生成exe文件时,我相信你已经注意到它会打印出所需的dll文件。你需要在exe无法运行的系统上检查这些dll文件是否存在,以及它们的版本是否相同。

还有一点要注意。你是把整个dist文件夹都复制到系统上,还是只复制了exe文件?因为你需要的是整个dist文件夹,而不仅仅是exe文件。

7

这个问题和这个链接里的问题是一样的。

看看setup.py文件,它只是排除了那些已经在系统里的dll文件。

 'dll_excludes': [ "mswsock.dll", "powrprof.dll" ]

这会对你有帮助的!

撰写回答