如何减小使用cx_Freeze编译的Python可执行文件大小?

3

我使用cx_Freeze编译了一个Python程序。Python代码本身只有195行。然而,我的编译程序大小达到了500 MB。我使用了matplotlibnumpypymsgbox库,不知道这些库是否对编译后的程序大小产生如此大的影响。

这个出乎意料的文件大小的原因是什么?有没有办法减小可执行文件的大小?


我注意到的是,在使用pandas和numpy时,Pyinstaller生成的文件大小要小得多。我不知道为什么。 - eemilk
1个回答

4
cx_Freeze 的部分目的是捆绑所有依赖项,以便最终用户无需安装它们。 numpy、matplotlib 等不算小的依赖项,尤其是它们有大量二进制(非 Python)组件。因此,你所要求的实际上是不可能的,这不是因为 cx_Freeze 的限制,而是因为以下两个要求之间存在矛盾:
  • 最终用户应该能够在几乎任何 Windows 机器上运行可执行文件,包括可能没有 Python、numpy 和 matplotlib 的机器
  • 分发的二进制文件大小应该很小
你不能同时满足这两个要求。cx_Freeze 适用于第一个要求,但不适用于第二个要求。如果你可以假设你的最终用户已经安装了 Python、numpy、matplotlib(或可以单独安装),并且想要分发你的程序以使二进制文件大小很小,则 wheel 更合适。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接