【问题标题】:how to reduce size of exe using py2exe如何使用py2exe减小exe的大小
【发布时间】:2010-12-09 17:25:35
【问题描述】:

我使用 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'],

谢谢。

【问题讨论】:

    标签: python executable py2exe filesize


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 是的,我知道 py2exe 不会编译我的程序,但是当我谈论可用于减小大小的“选项”(如我的帖子中所示)时。我不希望获得小于运行时的尺寸,但仅嵌入我需要的内容可能会导致迷你框架的可接受尺寸。
      猜你喜欢
      • 1970-01-01
      • 2018-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-03
      • 1970-01-01
      相关资源
      最近更新 更多