Python py2exe - 内存加载错误
我正在用Python创建一个中等复杂度的应用程序。现在一切运行得很好,我想用py2exe把它做成一个Windows可执行文件。可执行文件创建得很顺利,但当我尝试运行它时,出现了以下错误。
File "zipextimporter.pyo", line 82, in load_module
File "ffhandler.pyo", line 33, in ?
File "zipextimporter.pyo", line 82, in load_module
File "pyAA\__init__.pyo", line 1, in ?
File "zipextimporter.pyo", line 82, in load_module
File "pyAA\AA.pyo", line 8, in ?
File "zipextimporter.pyo", line 82, in load_module
File "pyAA\pyAAc.pyo", line 5, in ?
File "zipextimporter.pyo", line 98, in load_module
ImportError: MemoryLoadLibrary failed loading pyAA\_pyAAc.pyd
在这个应用程序中,我使用了pyAA。我在网上搜索过,但找不到解决办法。我把msvcp71.dll复制到了windows/system32文件夹里,但问题依然存在。
我之前解决过这个问题(大约7个月前),但我的硬盘坏了,现在再尝试重建时却找不到解决办法。:-(
如果有人能帮我解决这个问题,我会非常感激。
编辑:当我不使用打包文件选项时,py2exe运行得很好。但一旦使用了打包文件选项,就会失败。
我尝试过不使用zipfile选项,这样会和可执行文件一起创建一个library.zip。结果还是失败了。我用7-zip解压了library.zip,发现里面的pyAA文件夹里有_pyAAc.pyd文件。所以,看起来是memoryloadlibrary函数出了问题。
当我尝试用Windows自带的解压功能解压时,失败了。我不得不使用7-zip来解压。这可能是一个线索吗?
1 个回答
0
你的构建中缺少一些DLL文件...
首先,在你的硬盘上搜索一下文件 _pyAAC.pyd
。确保这个文件包含在你的构建中。
然后,使用'依赖关系查看器'来检查这个.pyd文件(就是你用py2exe编译的版本!),看看还有哪些文件缺失(其他DLL文件导致了这个MemoryLoadLibrary
的提示)。确保这些依赖文件也包含在内,...