快速上手pyinstaller
1. PyInstaller 安装
首先安装 PyInstaller:
pip install pyinstaller |
验证安装是否成功:
pyinstaller --version |
2. 基本用法
打包单个脚本
pyinstaller your_script.py |
- 生成的文件会放在
dist/your_script/
目录下,包含可执行文件和依赖的多个文件。
打包为单个可执行文件
pyinstaller --onefile your_script.py |
--onefile
将所有依赖和代码合并为一个独立的可执行文件。
3. PyInstaller 常用选项
以下是常用选项的功能和用法:
1. 添加图标
pyinstaller --onefile --icon=your_icon.ico your_script.py |
- **
--icon
**:指定.ico
图标文件,适用于 Windows。
2. 隐藏终端窗口
pyinstaller --onefile --noconsole your_script.py |
- **
--noconsole
**:适用于 GUI 程序,隐藏终端窗口(仅在 Windows 中有效)。
3. 指定额外依赖路径
pyinstaller --onefile --paths=/path/to/extra/modules your_script.py |
- **
--paths
**:用于包含 Python 脚本未在标准路径下的模块或包。
4. 处理隐藏导入
某些模块(如动态导入的模块)可能无法被自动检测到,需要手动指定:
pyinstaller --hidden-import=module_name your_script.py |
- **
--hidden-import
**:解决未检测的依赖模块。
5. 压缩可执行文件
如果可执行文件体积较大,可以使用 UPX 压缩:
- 安装 UPX。
- 使用以下命令:
pyinstaller --onefile --upx-dir=/path/to/upx your_script.py
6. 调试模式
在打包时开启调试模式以查看详细错误信息:
pyinstaller --debug=all your_script.py |
7. 指定工作目录
为避免污染当前目录,可以指定工作目录:
pyinstaller --workpath=/path/to/workdir your_script.py |
- **
--workpath
**:指定临时文件的存放目录。
4. 打包结果文件说明
- **
dist/
**:生成的可执行文件和相关资源。 - **
build/
**:构建过程中产生的临时文件。 .spec
文件:PyInstaller 的配置文件,可手动修改以支持更复杂的需求。
5. 使用 .spec
文件
生成 .spec
文件
在第一次运行 PyInstaller 时会自动生成 .spec
文件:
pyinstaller your_script.py |
或手动创建:
pyinstaller --onefile --icon=your_icon.ico your_script.py |
编辑 .spec
文件
你可以修改 .spec
文件来配置:
- 数据文件(如图片、配置文件):
datas=[('path/to/datafile', 'destination_folder')]
- 隐藏导入:
hiddenimports=['module1', 'module2']
使用 .spec
文件重新打包
pyinstaller your_script.spec |
6. 示例应用场景
简单脚本打包
假设有一个脚本 hello.py
:
print("Hello, PyInstaller!") |
运行以下命令:
pyinstaller --onefile hello.py |
生成的可执行文件位于 dist/hello.exe
。
打包 GUI 程序
对于 Tkinter 或 PyQt5 程序,示例脚本 gui_app.py
:
from tkinter import Tk, Label |
运行命令:
pyinstaller --onefile --noconsole --icon=app_icon.ico gui_app.py |
包含数据文件
如果脚本依赖额外的数据文件:
# example.py |
命令:
pyinstaller --onefile --add-data "config.txt;." example.py |
- **
--add-data
**:格式为文件路径;目标目录
。
7. 常见问题与解决
运行时缺失模块
- 检查日志,使用
--hidden-import
添加缺失模块。
- 检查日志,使用
文件过大
- 启用 UPX 压缩。
- 检查是否有多余的依赖包。
路径问题
- 使用
sys._MEIPASS
获取运行时的临时路径:import sys, os
path = os.path.join(sys._MEIPASS, 'config.txt')
- 使用
8. 完整命令模板
综合多个参数的完整示例:
pyinstaller --onefile --noconsole --icon=app_icon.ico --add-data "config.txt;." --hidden-import=pkg_resources.py2_warn --debug=all gui_app.py |
- 标题: 快速上手pyinstaller
- 作者: 晨曦
- 创建于 : 2024-11-30 20:59:53
- 更新于 : 2025-01-14 03:24:47
- 链接: https://blog.starlit.icu/2024/11/30/python/pyinstaller/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论