将 Python 程序打包为可执行文件(Windows & Linux)
将 Python 程序打包为可执行文件(Windows & Linux)
前提条件
在开始之前,请根据目标平台准备开发环境:
所有平台必备
- Python 3.x
- pip(Python包管理工具)
Windows 额外要求
- 建议使用 PowerShell 或 CMD 命令行工具
Linux 额外要求
- 需要安装基础开发工具包(以 Arch Linux 为例):
1
sudo pacman -S base-devel zlib
安装 PyInstaller
1 | # 通用安装命令 |
打包程序
Windows 系统
进入脚本目录
1
cd C:\path\to\your\script
生成可执行文件
1
pyinstaller --onefile --windowed your_script.py
获取生成文件
- 在
dist/
目录中找到.exe
文件 - 注意:首次打包可能较慢(5-30秒)
- 在
Linux 系统
进入脚本目录
1
cd /path/to/your/script
生成可执行文件
1
pyinstaller --onefile your_script.py
设置执行权限
1
chmod +x dist/your_script
运行测试
1
./dist/your_script
跨平台注意事项
部分参数
--onefile
:生成单文件可执行程序--windowed
(仅Windows):隐藏控制台窗口--icon
:自定义程序图标(Windows使用.ico,Linux建议.svg或.png)--add-data
:添加额外资源文件(例:--add-data 'assets/*:assets'
)
路径处理技巧
1 | # 在代码中使用资源路径兼容写法 |
高级打包选项
压缩优化
1 | # 使用UPX压缩(需提前安装) |
排除不需要的模块
1 | pyinstaller --onefile --exclude-module matplotlib your_script.py |
指定Python解释器
1 | # 确保使用正确的Python版本 |
测试与分发
Windows 测试
- 直接双击.exe文件运行
- 若出现闪退,可在命令行中运行查看错误信息
Linux 测试
1 | # 检查依赖库 |
通用验证方法
- 在虚拟机/干净系统中测试
- 检查临时解压目录(Windows:
%TEMP%\_MEIxxxxx
,Linux:/tmp/_MEIxxxxx
) - 使用
--log-level DEBUG
参数查看详细打包过程
常见问题解决
Q:程序找不到数据文件
- 确保使用
--add-data
添加资源文件 - 在代码中使用前文提到的
resource_path()
方法
Q:出现 ModuleNotFoundError
- 使用
--hidden-import
指定隐藏依赖1
pyinstaller --hidden-import sklearn.utils._weight_vector your_script.py
Q:Linux打包后文件体积过大
- 使用UPX压缩
- 排除不需要的库(
--exclude-module
) - 使用 Alpine Linux 进行最小化打包
Q:图形界面程序无法启动
- Windows:安装VC++运行库
- Linux:安装GTK/Qt依赖
1
2# 对于PyQt5程序
sudo pacman -S qt5-base
版本兼容性
Python 版本 | PyInstaller 推荐版本 | 注意事项 |
---|---|---|
3.6-3.7 | 4.x | 停止维护版本 |
3.8-3.10 | 5.x | 主流支持版本 |
3.11+ | 6.x | 需要最新PyInstaller |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 陌上尘归处!