Python系列之pyinstaller

Python系列之pyinstaller
可爱可倾PyInstaller
PyInstaller 是一个将 Python 程序打包成独立可执行文件的工具,支持 Windows、Linux 和 macOS 等平台。它可以将Python 解释器和所有依赖的库打包到一个单独的可执行文件中,使得用户无需安装 Python 环境即可运行程序。
在 Python 中打包成 EXE 且要求无弹窗、体积小,推荐使用 PyInstaller + UPX 压缩。
1. 安装必要工具
# 安装 PyInstaller
pip install pyinstaller
下载 UPX 并解压到任意目录
2. 打包命令
pyinstaller --onefile --noconsole --name app --icon=logo.ico --add-data="xxx;." --upx-dir="D:\upx-5.0.0-win64" --clean --exclude-module=tests app.py
参数说明:
--onefile:生成单个可执行文件--noconsole:禁用控制台窗口(GUI程序必选)--name:指定生成的可执行文件名称--icon:指定图标文件路径--add-data:添加额外数据文件(如图标等)--upx-dir:指定 UPX 路径进行二进制压缩(体积减少 30-50%)--clean:清理临时文件--exclude-module:排除不需要的模块
注意事项:
- 若图标仅作为EXE文件的显示图标使用,无需
--add-data参数。 --add-data参数在Windows和Linux下的分隔符不同:- Windows:使用分号
;作为路径分隔符 - Linux:使用冒号
:作为路径分隔符
- Windows:使用分号
- 可使用更小的 Python 基础环境(推荐 Python 3.11+,自带更小的嵌入包)
3. 打包示例
3.1. 打包带图标的 EXE 文件
pyinstaller --onefile --noconsole --name app --icon=logo.ico --upx-dir="D:\upx-5.0.0-win64" --clean app.py
3.2. 打包带数据文件的 EXE 文件
pyinstaller --onefile --noconsole --name app --icon=logo.ico --add-data="logo.ico;." --upx-dir="D:\upx-5.0.0-win64" --clean app.py
然后在代码中使用以下方式获取资源文件路径:
# 获取当前可执行文件的目录
import sys
import os
# 当用 PyInstaller 打包时,如果程序被“冻结”(也就是被打包成一个文件),sys.frozen 的值为 True,否则为 False。
if getattr(sys, 'frozen', False):
# 当前目录为当前可执行文件所在目录
application_path = sys._MEIPASS
else:
# 当前目录为当前脚本所在目录
application_path = os.path.dirname(__file__)
# 获取资源文件的路径
icon_path = os.path.join(application_path, 'example.ico')
4. 替代方案Nuitka
Nuitka 是一个 Python 到 C++ 的编译器,可以将 Python 代码编译成独立的可执行文件。它的优点是可以生成更高效的代码,打包后的程序运行速度更快。但是 Nuitka 的使用相对复杂,需要安装 C++ 编译器,并且编译速度较慢。
评论
匿名评论隐私政策
TwikooGiscus
✅ 若未加载出评论区,请刷新页面~






