加载包含pysvn的py2exe程序时失败
我正在尝试运行一个用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写的可执行文件在更旧的系统上无法运行。