(我已经解决了这个问题,但是我花了两个星期的时间和我的雇主几个盛大,所以我在这里分享它来拯救一些可怜的灵魂。)
我的公司正在将我们的应用程序从32位转换为64位。我们使用bundle = 2选项使用py2exe创建可执行文件。一旦尝试渲染matplotlib图,可执行文件就会崩溃。
版本:
蟒== 2.7.13,
matplotlib == 2.0.0,
numpy的== 1.13.1,
py2exe == 0.6.10a1
答案 0 :(得分:0)
我将错误跟踪到numpy库。 Numpy调用numpy.linalg._umath_linalg.inv()并且程序突然退出,没有错误消息,警告或回溯。
_umath_linalg是一个.pyd文件,我发现这个特殊的.pyd文件不喜欢从library.zip调用,这是py2exe在使用bundle选项2或1时放置它。
解决方案是在py2exe安装脚本中排除numpy并将整个包文件夹复制到分发目录中,并将该目录添加到主python脚本顶部的系统路径中。