Python打包成 exe,太大了该怎么解决?

liftword3个月前 (03-03)技术文章20

有个刚毕业的小学妹问,Python打包成exe,太大了该怎么解决?

首先要知道Python打包exe为什么这么大?

我猜你一定是用PyInstaller打包exe的,PyInstaller特点是将乱七八糟的东西打包一起,比如各种依赖库,即使你的程序只使用了pandas很小一个功能,比如read_data,它也会将整个pandas打包,这就导致出来的exe文件非常的大。

还有PyInstaller会打包Python解释器,方便在没有python的机器上运行python,而Python解释器本身就很大,包含了很多标准库,有二三十兆。这其实是不必要的负担,对于一个exe文件来说。

那如何解决这个问题呢?有两种方案。

第一种,优化PyInstaller打包过程,既然它把什么乱七八糟的都放进去了,我们来做个断舍离,使用.spec文件自定义打包配置。

.spec文件是PyInstaller在打包exe程序时生成的配置文件,包含了所有配置信息,像脚本路径、依赖库、资源文件、打包选项等,可以通过修改.spec文件,来精简不必要的依赖。

首先将待打包的py文件放进.spec文件里

pyi-makespec your_script.py

然后编辑.spec文件,剔出不必要的依赖库。

# your_script.spec
a = Analysis(
    ['your_script.py'],
    pathex=['/path/to/your/script'],
    binaries=[],
    datas=[],
    hiddenimports=[],
    hookspath=[],
    runtime_hooks=[],
    excludes=['unnecessary_library'],  # 排除不必要的库
    win_no_prefer_redirects=False,
    win_private_assemblies=False,
    cipher=block_cipher,
)

最后再用PyInstaller打包.spec文件,变成exe。

pyinstaller your_script.spec

但这种方法打包出来的exe还是会偏大,虽然剔除了不必要的依赖库,但是python解释器和用到的库还是会被打包进来,这就是比较烦。

接下来是第二种方法,使用Nuitka来打包exe文件,Nuitka会Python代码编译为C代码,生成更小的二进制文件,这样就没有各种依赖库和Python解释器一起打包的困扰了。

Nuitka用起来很简单。

pip install nuitka
nuitka --standalone --onefile your_script.py

接下来是案例,我用AI写了一个简单的Python应用-胎儿体重计算器,通过几个产检参数计算胎儿的体重,UI实现出来大概如下这样。

这个程序使用Python tkinter实现的,这是Python的标准库。使用PyInstaller打包出来的exe文件大小10.3MB。

接下来使用Nuitka打包出来的exe文件大小7.65MB,比PyInstaller小了35%,算是不错了,因为这个程序并没有用到第三方库。

如果是打包更加复杂的程序,软件的大小会进一步压缩,Nuitka的优势会更明显。

相关文章

最全RAR文件操作指南:如何用Python压缩、解压与筛选文件

引言:Python 对 .rar 文件进行压缩、解压以及筛选特定文件的操作代码封装一下import os import rarfile #todo 用于处理 RAR 文件 import zipfil...

20 天学 Python 文件操作:Day 8 压缩与解压文件

在日常开发中,压缩和解压文件是处理文件操作的常见需求。Python 提供了丰富的内置模块,比如 zipfile 和 shutil,让我们能够高效地压缩和解压文件。今天我们将学习如何使用这些模块进行操作...

20 天学 Python 文件操作:Day 16 文件压缩与解压

在日常工作中,我们经常需要对文件进行压缩和解压操作以减少存储空间或方便文件传输。今天,我们将学习如何使用 Python 进行文件的压缩与解压。1. 使用 zipfile 模块进行 ZIP 文件操作创建...

15《Python 办公自动化教程》文件压缩与解压缩

压缩包也是我们平时工作中经常要接触到的文件格式,压缩文件后缀名通常有 .zip、.rar、.7z 等等。Python 中也有专门用来操作压缩包文件的第三方模块 zipfile。听这个名字就知道是用来操...

小明用Python暴力破解压缩文件zip密码,省了250块钱

那天晚上小明和你一样在某个小网站上搜寻某些私密的学习资料突然看到论坛有人提供了一个非常牛逼的资源小明怀着激动的心情下载了下来他怀着激动的心情打开了这个压缩文件看到就只有这么一个 txt 小明就是一顿双...

使用 Python 在 Excel 中插入、压缩、替换、提取和删除图像

Excel 不仅仅是一个数字和公式的工具;它还提供了用于处理图像的强大功能。无论您是创建报告、演示文稿还是数据可视化,合并图像都可以大大提高 Excel 项目的整体影响力和专业性。在 Excel 中...