减少 pyinstaller exe 的大小

2025-03-05 09:16:00
admin
原创
90
摘要:问题描述:我有一个简单的 pandas pyinstaller exe,它超过 40MB。我的 exe 示例:import collections import csv import selenium import pandas print('hi') 40MB+似乎有点过分了。我怎样才能尽可能减少这种情况...

问题描述:

我有一个简单的 pandas pyinstaller exe,它超过 40MB。

我的 exe 示例:

import collections
import csv
import selenium
import pandas

print('hi')

40MB+似乎有点过分了。

我怎样才能尽可能减少这种情况?

一种方法:

pyinstaller --onefile --exclude matplotlib --exclude scipy --exclude pandas --exclude numpy.py

然而,考虑到排除名单有多大,这是不切实际的。

我如何选择一个文件夹让 pyinstaller 从中获取模块并排除其他所有内容,以便我可以拥有一个小应用程序?

规格文件:

a = Analysis(['123.py'],
             pathex=['C:\\Users\\AA\\ZZ'],
             binaries=[],
             datas=[],
             hiddenimports=[],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          name='123',
          debug=False,
          strip=False,
          upx=True,
          runtime_tmpdir=None,
          console=True )

还值得一提的是,默认情况下,Pyinstaller 不会检测 pandas。

添加:

hiddenimports = ['pandas._libs.tslibs.timedeltas']

To: C:Users<NAME>AppDataLocalProgramsPythonPython36Libsite-packagesPyInstallerhooks

使用多个可执行文件时的一个可能的解决方案是将每个可执行文件链接到单独的文件夹或包含所有导入的可执行文件。


解决方案 1:

尝试使用虚拟环境设置您的环境,并在其中仅安装所需的库

有关使用虚拟环境的一些详细信息如下:https://virtualenv.pypa.io/en/stable/

解决方案 2:

对我来说,这是一个使用 pandas 的简单案例,但 exe 文件非常大。

虽然删除某些目录很有帮助,但 UPXING 也有很大帮助。

我已经将它减少了很多,并且默认情况下它并没有这样做。

话虽如此,这里讨论的是最终和最重要的解决方案:从选定位置导入 Python 模块。因此有一个功能可以完成所有这些工作,但目前需要进行一些手动处理,因为:multipackage-bundles 已损坏。

现在来谈谈许多 exe 的简单解决方案

如果您有许多可执行文件,我强烈建议您采用这种方法:

pyinstaller -F abc.py --onedir (Have all imports of both scripts)
pyinstaller -F abd.py --onedir (Have all imports of both scripts)

现在将 abd.exe 和其他外部脚本一起放入 abc.py 文件夹的一个目录中。确保它们的名称不同,否则只有一个脚本会运行。

这确实很有效,因为所有依赖项都在一个文件夹中。这才是应该的。所以在这个例子中,假设你有一个 40mb 的文件夹。之后每个额外的 exe,它只会增加 5mb(或 exe 的大小),而不是每个 40mb。

解决方案 3:

可执行文件中包括 Python 解释器和所有导入的模块。

您可以尝试将您想要排除的模块添加到spec 文件的excludes列表中。Analysis

您也可以尝试使用 UPX 压缩可执行文件。请参阅使用 UPX 的注意事项

解决方案 4:

我遇到了类似的问题,并找到了解决方案。我使用了 Windows 终端预览。该程序允许创建各种虚拟环境,如 Windows Power Shell(顺便说一下,还有 Linux Ubuntu。另外,值得注意的是:您可以在此程序中安装多个终端,甚至可以一次打开几个终端。非常酷的东西)。

在 Windows 终端预览版的 Windows Power Shell 中,我安装了所有必要的库,然后打开了我的文件路径并尝试使用此命令:

pyinstaller --onefile -w '文件名.py'

...但是,输出exe不起作用。出于某种原因,控制台显示缺少一个库(我之前已经安装过)。我在模拟auto-py-to-exe库中找到了解决方案。此 GUI 使用的命令是:

pyinstaller --noconfirm --onedir --console "C:/Users/something/filename.py"

这个效果很好。我将输出 exe 程序的大小从 911MB 减小到了 82.9MB !

顺便说一句。 的输出大小为 911MB auto-py-to-exe

我想知道为什么还没有人创建过一个可以读取代码、检查哪些库是代码的一部分、然后只将它们放入压缩包中的压缩器。就我而言,auto-py-to-exe可能加载了我安装的所有库。这可以解释这个压缩文件夹的大小。

有人建议使用https://virtualenv.pypa.io/en/stable/但在我看来,这个库非常难,至少对我来说是这样。

解决方案 5:

对我来说,最重要的改进是不再使用 conda,而是使用 pip 安装所有必要的模块。这使许多项目中的可执行文件的大小减少了 10 倍。

解决方案 6:

  1. 使用较旧的 Python 版本:

* 切换到较旧的 Python 版本可以显著减小大小。例如,从 Python 3.12.5 迁移到 Python 3.8.10 可将我的程序大小从 29.56 MB 减小到 18.12 MB。
  1. 使用虚拟环境:

* 设置虚拟环境并仅安装所需的库:
# Windows
py -m venv .venv
.venvScriptsactivate
# Linux/macOS
python3 -m venv .venv
source .venv/bin/activate
  1. 使用UPX压缩:

* UPX 可以压缩您的可执行文件。安装 UPX 并将其与 PyInstaller 一起使用:
pyinstaller --upx-dir=/path/to/upx
  1. 最小化 PyInstaller 的内部文件(高级):

* PyInstaller 包含一些您可能不需要的额外内部文件。您可以手动删除或排除这些文件以节省空间,但请注意,如果操作不当,可能会导致您的构建不稳定。

希望这有帮助:)

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   3970  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   2740  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Freshdesk、ClickUp、nTask、Hubstaff、Plutio、Productive、Targa、Bonsai、Wrike。在当今快速变化的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多企业在项目管理过程中面临着诸多痛点,如任务分配不...
项目管理系统   79  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Monday、TeamGantt、Filestage、Chanty、Visor、Smartsheet、Productive、Quire、Planview。在当今快速变化的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多项目经理和团队在管理复杂项目时,常...
开源项目管理工具   87  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Smartsheet、GanttPRO、Backlog、Visor、ResourceGuru、Productive、Xebrio、Hive、Quire。在当今快节奏的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多企业在选择项目管理工具时常常面临困惑:...
项目管理系统   74  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用