从py2app中排除matplotlib后端

时间:2016-01-28 19:33:53

标签: python matplotlib wxpython py2app

我使用py2app制作使用wxPython(whew)的matplotlib冻结二进制文件。由此产生的可执行文件非常大,所以我希望尽可能减少它。

这样做的一个明显方法是排除不需要的matplotlib后端。我已尝试使用python setup.py py2app --matplotlib-backends -运行我的脚本,该脚本应仅编译脚本中使用的后端,如下所示:https://pythonhosted.org/py2app/options.html。由此产生的可执行文件确实要小得多,但它已经破碎了。我也试过了python setup.py py2app --matplotlib-backends "WXAgg",但同样失败了。这是大部分的追溯(从控制台尴尬复制,抱歉)。

import wx

File "wx/__init__.pyc", line 45, in <module>

File "wx/_core.pyc", line 4, in <module>

File "wx/_core_.pyc", line 14, in <module>

File "wx/_core_.pyc", line 10, in __load

ImportError: dlopen(/Users/***/***/***/dist/magic_gui.app/Contents/Resources/lib/python2.7/lib-dynload/wx/_core_.so, 2): Library not loaded: @rpath/lib/libwx_osx_cocoau-3.0.dylib

Referenced from: /Users/***/***/***/dist/magic_gui.app/Contents/Resources/lib/python2.7/lib-dynload/wx/_core_.so

Reason: image not found

也许我可以明确告诉它包含libwx_osx_cocoau-3.0.dylib。或者,我可能需要明确包含另一个后端(虽然我使用的是wxPython,因此WXAgg后端应该是正确的。)

我有两个问题:第一,有没有办法在不破坏我的程序的情况下只包含必需的matplotlib后端?其次,还有其他方法可以/应该考虑使用py2app使我的程序更小吗?

0 个答案:

没有答案