当bundle_files=1时,py2exe+pywin32 MemoryLoadLibrary导入失败

2024-05-12 18:08:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个使用pywin32的简单程序。我想把它部署为可执行文件,所以我py2exe了它。我也不需要太多的文件,所以我将bundle_files设置为1(意味着将所有内容捆绑在一起)。但是,当我尝试运行它时,我得到:

Traceback (most recent call last):
  File "pshelper.py", line 4, in <module>
  File "zipextimporter.pyc", line 82, in load_module
  File "win32.pyc", line 8, in <module>
  File "zipextimporter.pyc", line 98, in load_module
ImportError: MemoryLoadLibrary failed loading win32ui.pyd

在我的安装脚本中,我尝试将packages=["win32ui"]includes=["win32ui"]作为选项,但这没用。如何让py2exe包含win32用户界面?在

如果我不要求它打包文件,我就不会有这个问题,所以我现在可以这么做,但是我想知道如何让它正常工作。在


Tags: 文件in程序可执行文件部署lineloadfile
3条回答

到目前为止效果最好的解决方法是简单地使用ctypes重新实现pywin32函数。这不需要另一个.pyd或.dll文件,因此可以避免这个问题。在

要不要试试PyInstaller?我在Windows7和Ubuntu10.04上都用过它,而且它的工作原理很神奇,即使我在Windows上编译为.pyd。在

我已经能够捆绑我用它开发的各种应用程序。在

你确定问题是win32吗用户界面.pyd不包括在内?堆栈跟踪与wiki中提到的不完全相同,但请查看以下内容:http://www.py2exe.org/index.cgi/Py2exeAndWin32ui。在

相关问题 更多 >