如何使用py2exe减小exe的大小

att*_*wad 6 python executable py2exe filesize

我使用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'],
Run Code Online (Sandbox Code Playgroud)

谢谢.

Phi*_*e F 5

您的程序很简单并不意味着它很小。您的程序通过 wxWidget 堆栈有很多依赖性,考虑到所有这些,6 Mb 看起来并没有那么大。

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

  1. 少分发东西:看来你已经开始这条路了。查看随程序一起分发的所有内容,如果不需要则将其删除。DllDepend 可以告诉您为什么 DLL 与您的程序一起分发(可能是因为 pyd 需要它)。对于其他模块,删除它们并尝试它是否仍然有效......

  2. 更好地压缩它:在每个 dll 上运行 upx。使用 7zip 最大压缩级别压缩您的最终程序/存档。


War*_*ung 3

大部分空间是 Python 运行时本身。py2exe 不会将您的程序“编译”为本机 x86 指令或类似指令。它只是将 Python、您的 *.pyc 文件以及您的程序使用的任何模块捆绑到一个单独运行的包中。

因此,您可以选择仅分发 *.pyc 文件,并让用户自行提供自己的 Python 发行版并安装任何所需的模块。这在 Windows 上不是一个非常流行的选项,但在其他地方通常会发生这种情况。