无论我在 StackOverflow 上搜索多少,都没有找到关于exe文件压缩的明确答案。对 exe-shnik 的填充感兴趣,71 mb 里面有什么?我使用PyInstaller最简单的窗口应用程序进行了组装kivy。初始组装后,在最终确定spec文件之前,我收到了 70 兆字节的干净空间。值得考虑的是,Windows 窗口提供程序尚未连接 - 我没有exe使用spec. 第二次组装后,大小变为 71 mb。我真的很想知道这么大的尺寸的原因以及如何减小它。先感谢您。
PS 我可以忍受 30-40 MB 的大小,但 70 就太多了。
PPS 我使用 UPX 压缩和 strip 参数并将大小达到 56mb(最初为 76)。但我不认为这是最小可能的尺寸。请提供更多选择 - 40 MB 适合我。
我将附上以下规格文件:
# -*- mode: python ; coding: utf-8 -*-
from kivy_deps import sdl2, glew
block_cipher = None
a = Analysis(
['src\\main.py'],
pathex=[],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False,
)
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
exe = EXE(
pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
*[Tree(p) for p in (sdl2.dep_bins + glew.dep_bins)],
name='apps',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=True,
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
)
将 PyInstaller 与 Kivy 结合使用时,有多种方法可以减少可执行文件的大小。
删除不必要的模块和代码:在 PyInstaller 规范文件中,您可以指定应从构建中排除哪些模块和文件。如果您不使用某些模块或依赖项,则可以将它们从构建中排除,这将减少最终可执行文件的大小。
压缩可执行文件:PyInstaller 有一个 --upx 选项,允许您使用 UPX(通用可执行文件压缩包)来压缩可执行文件。您可以将此选项添加到 PyInstaller 命令行以减小文件大小。例如:
使用“onefile”而不是“onedir”:使用 Kivy 构建 PyInstaller 时,可以在 PyInstaller 命令行上选择 --onefile 选项而不是 --onedir。这会将所有文件合并为一个可执行文件,这通常会导致文件大小更小。例如:
使用外部库:您可以使用外部库(如 DLL)并在运行时加载它们,而不是在生成的文件中包含所有依赖项。这可以减少可执行文件的大小。
剥离调试信息:构建 PyInstaller 时,可以指定 --strip 选项从可执行文件中剥离调试信息,这可以减少其大小。
请注意,其中一些方法可能会影响应用程序的性能和功能。
您使用的是虚拟环境吗?如果是,请尝试查看虚拟环境中安装的模块并删除任何不必要的模块。