Concept
packaging
概述
PyInstaller 是将 Python 程序打包为独立可执行文件的工具,支持 –onefile、–add-data 等选项及 .spec 文件配置,用于定制打包过程。
什么是 packaging
PyInstaller 是将 Python 程序打包为独立可执行文件的工具,支持跨平台(Windows/macOS/Linux)。通过将代码、依赖库和资源文件封装为单个可执行文件(或目录),用户无需安装 Python 环境即可运行程序。
核心概念
- –onefile
生成单个可执行文件,所有依赖和资源打包为一个文件,适合分发。 - –add-data
添加非代码资源(如图片、配置文件),需指定源路径和目标路径。 - .spec 文件
PyInstaller 的配置文件,定义打包规则(入口点、路径、隐藏导入等)。 - 钩子脚本(hooks)
自动检测第三方库的依赖关系,支持自定义钩子以处理特殊库。 - 构建流程
分为分析(分析依赖)、构建(打包资源)、打包(生成可执行文件)三个阶段。
典型应用场景
- 分发桌面应用程序:将 Python 脚本打包为
.exe(Windows)或.app(macOS)直接分发。 - 避免依赖冲突:隔离环境依赖,防止目标机器 Python 环境版本不兼容。
- 简化部署:无需用户安装 Python 或 pip,降低部署复杂度。
相关技术
- Python 标准库:
distutils、setuptools(依赖管理)。 - 虚拟环境工具:
venv/virtualenv(打包前环境隔离)。 - 交叉编译工具:如
py2exe(Windows)、cx_Freeze(多平台),但 PyInstaller 更通用。 - 资源管理:
PyInstaller.utils.hooks(自定义资源处理逻辑)。
学习路径建议
- 基础使用
- 安装:
pip install pyinstaller - 命令:
pyinstaller --onefile script.py
- 安装:
- 处理资源文件
- 学习
--add-data参数,掌握路径映射规则。
- 学习
- 定制配置
- 编辑
.spec文件,配置隐藏导入、排除模块、图标等。
- 编辑
- 调试与优化
- 使用
--debug模式排查资源路径问题,分析依赖树。
- 使用
- 高级主题
- 自定义钩子脚本、支持动态加载模块、打包为 DLL/so 库。