如何使用py2exe减少exe文件的大小(how to reduce size of exe usi

2019-08-31 23:06发布

我开发使用Python和wxWidgets的一个小程序。 这是仅使用一个小型的框架在需要时显示一些信息,非常简单的程序,而其余的时间就显示什么,只在任务栏中的图标。

当我使用py2exe建立的exe(单个文件exe文件模式,优化),我得到一个6MB大小的文件!

我试着不包括一些库或DLL没有需要的,但尽管如此,我不明白为什么我得到的只是一个小框这么大的文件,并在任务栏上的图标。

有没有什么办法,以减少与py2exe生成的exe文件的大小?

这里是我做过什么来减少自己的一点:

options = {"py2exe":{"excludes" : ['_gtkagg', '_tkagg', 'bsddb', 'curses', 'email', 'pywin.debugger',
                                'pywin.debugger.dbgcon', 'pywin.dialogs', 'tcl',
                                'Tkconstants', 'Tkinter'],
                    "dll_excludes": ['libgdk-win32-2.0-0.dll', 'libgobject-2.0-0.dll', 'tcl84.dll',
                                'tk84.dll'],

谢谢。

Answer 1:

你的程序是简单的事实并不意味着它是小的。 你的程序通过wxWidget堆有许多依赖和6 MB看起来不那么大这一切的初衷。

但是,回到问题。 要缩小一个py2exe生成的程序,你可以做一些明显的事情:

  1. 分发少的东西:看来你已经开始了这条道路。 看看与您的程序一起分发的一切,消除它,如果不需要的话。 DllDepend可以告诉你为什么一个DLL与你的程序的分布式(可能是因为PYD需要它)。 对于其他模块,删除它们,尝试,如果它仍然有效?

  2. 更好的压缩它:UPX对每个DLL运行。 压缩您的最终方案/用7zip的最大压缩级别存档。



Answer 2:

大部分空间是Python运行时本身。 py2exe没有你的程序“编译”,以原生x86指令,或类似的东西。 它只是捆绑的Python,你* pyc文件,你的程序使用了成自身运行的捆绑任何模块。

因此,你可以选择只分发您的* pyc文件,并把它留给用户自己提供的Python发行和安装任何需要的模块。 这不是在Windows中非常受欢迎的选择,但它通常会发生什么其他地方。



文章来源: how to reduce size of exe using py2exe