【问题标题】:PyInstaller and Nuitka generate ridiculously large files. How can the size be reduced?PyInstaller 和 Nuitka 生成非常大的文件。如何减小尺寸?
【发布时间】:2020-05-21 22:51:03
【问题描述】:

我在 Windows 上使用 Python 3.6 的 Anaconda 发行版,我希望将一个简单的 Python 脚本转换为一个独立的可执行文件。问题是生成的文件非常大(~900mb),而只使用了几个外部库。

更具体地说,我使用 PyQt5 和 pyqtgraph 以及一些集成的 python 库,例如 sys、time、os 和 math。到目前为止,我使用过 PyInstaller 和 Nuitka,但似乎无法大幅减小可执行文件的大小。

我注意到存在一些占用大约 600mb 空间的 mkl 文件。删除这些文件后,我仍然能够运行我的程序,看起来很顺利。我还注意到有两个名为 libopenblas 的文件,它们似乎对程序的运行至关重要,总共有 100mb。

我已经研究过这个问题,我在 Stackoverflow 和其他网站上发现了类似的问题。人们声称他们能够使用 PyInstaller 生成小于 40mb 的 exe 文件。据说,为了实现这种尺寸减小,应该排除所有杂乱的库。但是,我不明白什么是“混乱”。例如,我尝试排除 numpy 并且程序没有运行,尽管事实上我没有在我的程序中直接使用它。显然,正在使用的库有一些依赖项,没有这些依赖项程序就无法运行。

最后,我找到了这个forum,建议使用虚拟环境而不是Anaconda。我尝试使用 venv 设置它,但我无法实现它,因为我的 Anaconda 安装会干扰它,并且不允许我重新安装所有必要的库。

无论我做什么,我最终都会得到至少 200mb 的数据。如何获得大小小于 40mb 的功能可执行文件?如果像这样的简单程序生成如此大的文件,想象一下如果我决定集成其他库(如 tensorflow 或 scipy)最终会得到什么。这不是一个可行的解决方案,到目前为止我还没有找到解决它的方法。非常感谢任何帮助。

编辑:我尝试从其官方网站安装 Python,并从 Path 中删除了 Anaconda。我最终得到了一个稍小的文件,但它没有运行。

【问题讨论】:

    标签: python-3.x anaconda pyinstaller python-venv nuitka


    【解决方案1】:

    我意识到这是旧的,但我今天遇到了它并且遇到了同样的问题。

    一个 Pyinstaller hello world 程序将编译到大约 12 Mb。但是,一旦您开始做任何实质性的事情,就需要 numpy,这是很大的。

    我有一个程序需要

    paramiko
    scp
    

    它编译为 12 Mb。

    我还有一个需要

    numpy
    tqdm
    nomkl
    matplotlib
    

    它编译到 ~200 Mb(压缩到 ~75 Mb)。使用 nomkl 包可以让安装程序自动将 mkl 库排除在外。您必须删除 numpy,然后安装 nomkl 并重新安装 numpy。如果没有 nomkl,上述程序大约是 1 Gb。

    如果您安装了 anaconda,我建议使用 conda 环境而不是虚拟环境。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-04
      • 2011-01-16
      • 2017-04-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多