网站首页 > java教程 正文
有个刚毕业的小学妹问,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的优势会更明显。
猜你喜欢
- 2025-05-03 pyinstaller打包python程序高级技巧
- 2025-05-03 将python打包成exe的方式(python打包成exe的方法)
- 2025-05-03 Python打包:如何将 Flask 项目打包成exe程序
- 2025-05-03 py2exe实现python文件打包为.exe可执行程序(上篇)
- 2025-05-03 如何将 Python 项目打包成 exe,另带卸载功能!
- 2025-05-03 可视化 Python 打包 exe,这个神器绝了!
- 2025-05-03 案例详解pyinstaller将python程序打包为可执行文件exe
- 2025-05-03 Cocos 3.x 菜鸟一起玩:打包window程序
- 2025-05-03 怎么把 Python + Flet 开发的程序,打包为 exe ?这个方法很简单!
- 2025-05-03 python打包exe,各种bug处理,以及解决方案
你 发表评论:
欢迎- 最近发表
-
- pyinstaller打包python程序高级技巧
- 将python打包成exe的方式(python打包成exe的方法)
- Python打包:如何将 Flask 项目打包成exe程序
- py2exe实现python文件打包为.exe可执行程序(上篇)
- 如何将 Python 项目打包成 exe,另带卸载功能!
- Python打包成 exe,太大了该怎么解决?
- 可视化 Python 打包 exe,这个神器绝了!
- 案例详解pyinstaller将python程序打包为可执行文件exe
- Cocos 3.x 菜鸟一起玩:打包window程序
- 怎么把 Python + Flet 开发的程序,打包为 exe ?这个方法很简单!
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)