【问题标题】:Bundled executable crashes without warning when rendering plots渲染绘图时捆绑的可执行文件在没有警告的情况下崩溃
【发布时间】:2017-08-15 23:14:12
【问题描述】:
(我已经解决了这个问题,但它花费了我两周的时间和我的雇主,所以我在这里分享它以拯救一些可怜的灵魂。)
我的公司正在将我们的应用程序从 32 位转换为 64 位。我们使用 py2exe 创建一个可执行文件,使用 bundle=2 选项。可执行文件一尝试渲染 matplotlib 图就开始崩溃。
版本:
python==2.7.13,
matplotlib==2.0.0,
numpy==1.13.1,
py2exe==0.6.10a1
【问题讨论】:
标签:
python-2.7
numpy
matplotlib
64-bit
py2exe
【解决方案1】:
我将错误跟踪到 numpy 库。 Numpy 调用 numpy.linalg._umath_linalg.inv() 并且程序突然退出,没有错误消息、警告或回溯。
_umath_linalg 是一个 .pyd 文件,我发现这个特定的 .pyd 文件不喜欢从 library.zip 中调用,这是 py2exe 在使用捆绑选项 2 或 1 时放置它的位置。
解决方案是在py2exe安装脚本中排除numpy,将整个包文件夹复制到分发目录,并将该目录添加到主python脚本顶部的系统路径中。