我有一个wxPython GUI,我一直在使用py2exe将其打包为Windows的冻结二进制文件。我能在一两个月前成功使用它,但现在一切都在破碎。
这是一个非常简单的失败示例文件:
import sys
import wx
if __name__ == "__main__":
app = wx.App(redirect=True)
app.frame = wx.Frame(None, title="My frame")
app.frame.Center()
app.frame.Show()
app.MainLoop()
我使用的是真实项目中的实际设置文件,因此它包括:
options = {
"py2exe": {
"includes": ["scipy", "scipy.special.*", "scipy.linalg.*", "scipy.linalg.__decomp_update", "scipy.sparse.*", "scipy.sparse.csgraph.*", "scipy.ndimage", "scipy.ndimage.*", scipy.linalg.cython_blas"],
"packages": ["matplotlib", "pytz", "pandas"],
"dll_excludes": ["MSVCP90.dll", ...]
},
...
}
当我尝试制作新版本时,我收到一条错误,上面写着"没有这样的文件或目录' numpy-atlas.dll'"。
如果我添加" numpy-atlas.dll"到" dll_excludes"列表,构建运行,但可执行文件不运行。我在日志中收到此错误:
Traceback (most recent call last):
File "magic_gui.py", line 10, in <module>
File "matplotlib\__init__.pyc", line 122, in <module>
File "matplotlib\cbook.pyc", line 33, in <module>
File "numpy\__init__.pyc", line 180, in <module>
File "numpy\add_newdocs.pyc", line 13, in <module>
File "numpy\lib\__init__.pyc", line 8, in <module>
File "numpy\lib\type_check.pyc", line 11, in <module>
File "numpy\core\__init__.pyc", line 14, in <module>
File "numpy\core\multiarray.pyc", line 12, in <module>
File "numpy\core\multiarray.pyc", line 10, in __load
ImportError: DLL load failed: The specified module could not be found.
这个类似的question让我想到了documentation关于使用py2exe和鸡蛋的问题。不过,我认为我的任何依赖都不是以蛋的形式出现的。
我特别困惑,因为这个相同的设置文件直到最近都运行良好。
更新:
在我开始发布问题之前,我最终解决了这个问题。我添加了&#34; numpy-atlas.dll&#34;到&#34; ignore_dlls&#34;列表,但然后手动将其添加到我的分发文件夹中。显然,这不是一个非常令人满意的解决方案,所以如果有人可以提出更好的解决方案/解释,那就太棒了。