简单的py2exe打破了numpy导入

时间:2016-04-12 18:12:39

标签: python numpy matplotlib py2exe

我有一个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;列表,但然后手动将其添加到我的分发文件夹中。显然,这不是一个非常令人满意的解决方案,所以如果有人可以提出更好的解决方案/解释,那就太棒了。

0 个答案:

没有答案