加载包含pysvn的py2exe程序时失败

2 投票
2 回答
1022 浏览
提问于 2025-04-16 00:53

我正在尝试运行一个用py2exe打包的程序(package.py),这个程序里包含了pysvn。但是运行时出现了以下错误:

Traceback (most recent call last):  
   File "package.py", line 27, in <module>  
   File "zipextimporter.pyc", line 82, in load_module  
   File "pysvn\__init__.pyc", line 99, in <module>  
   File "zipextimporter.pyc", line 98, in load_module  
ImportError: MemoryLoadLibrary failed loading pysvn\_pysvn_2_6.pyd  

这个脚本在办公室里的其他人电脑上运行得很好,唯一的不同是我用的是Windows 7 x64,而他们用的是WinXP x86。我在我的pysvn目录里确实有_pysvn_2_6.pyd这个文件。

py2exe的“需要修复的问题”页面上有类似的错误信息,提到WxPython找不到一个需要的系统模块,但我并没有使用WxPython,而且我也有他们提到的那个dll文件。

关于“与各种包和模块一起工作”的py2exe页面没有提到pysvn,我也找不到其他人有类似的问题。

我检查了py2exe的输出,按照这个回答的说明,但我的电脑似乎在正确的位置上有所有需要的二进制文件。

编辑: 我刚刚尝试在这台机器上运行其他用py2exe创建的程序,它们也失败了。看起来问题出在我的机器上(也就是x64),而不是我正在转换的特定程序;我在另一个程序上也遇到了类似的错误:

Traceback (most recent call last):
  File "rundemo.py", line 13, in <module>
    import win32api as w32
  File "zipextimporter.pyc", line 98, in load_module
ImportError: MemoryLoadLibrary failed loading win32api.pyd

编辑2: 我尝试在一台32位的机器上运行我64位电脑生成的py2exe程序,结果也失败了,错误信息是一样的。我觉得我生成的是32位的exe(py2exe文档说64位支持还是实验性的,我也没有明确开启这个功能),但我不太确定怎么检查以确认这一点。

2 个回答

0

安装 PyWin32

0

py2exe这个项目好像已经停止更新了,所以我们把程序重写成了C++。我们现在可以在自己的电脑上为Win7 x64系统生成可执行文件,但我们发现用Win7写的可执行文件在更旧的系统上无法运行。

撰写回答