01
打包工具选型
PyInstaller vs Nuitka vs cx_Freeze vs Briefcase,优缺点与适用场景
选型对比
02
环境隔离
使用虚拟环境(venv/conda)避免依赖冲突,环境污染问题
venvconda
03
依赖管理
requirements.txt正确写法,锁定版本,避免“在我电脑上能跑”
锁定兼容
04
隐藏依赖
遗漏的隐式依赖(动态导入、数据文件、C扩展库)排查方法
隐式排查
05
路径问题
资源文件路径失效根源与解决方案 (sys._MEIPASS)
_MEIPASS资源
06
单文件 vs 单目录
两种打包模式优劣:启动速度、资源管理、反编译风险
打包模式权衡
07
图标与元数据
嵌入应用图标、版本号、公司名,避免“无图标”尴尬
图标元信息
08
UPX压缩
压缩可执行文件利弊,杀毒软件误报处理
UPX误报
09
Windows平台避坑
隐藏控制台(--noconsole)、路径分隔符、管理员权限
Windows控制台
10
macOS平台避坑
.app bundle结构、签名公证、DMG打包
macOS公证
11
Linux平台避坑
AppImage vs Snap vs Flatpak,libc/libffi兼容性
LinuxAppImage
12
多进程与多线程
multiprocessing失效原因,freeze_support正确启动
多进程freeze
13
C扩展与动态库
PyQt/PySide、OpenCV、NumPy等C扩展特殊配置
C扩展动态库
14
数据文件打包
--add-data添加非Python文件,代码中正确引用
add-data资源
15
Hook文件编写
自定义PyInstaller Hook解决第三方库兼容,实战案例
Hook兼容
16
spec文件详解
从命令行到.spec,精细化控制打包每一环
spec配置
17
日志与调试
程序崩溃无输出?日志文件与--debug定位问题
调试--debug
18
反编译与保护
PyInstaller exe反编译难度,混淆、加密与商业保护
反编译加密
19
CI/CD集成
GitHub Actions/GitLab CI自动化打包,一键多平台
CI/CD自动化
20
体积优化
从100MB到30MB,裁剪依赖、轻量库、压缩资源
体积裁剪
21
启动速度优化
启动慢原因,懒加载、预编译与并行初始化
启动优化
22
兼容性测试
Win7/Win10/Win11、macOS、Linux发行版测试策略
兼容测试
23
杀软误报
360、火绒报毒原因分析,降低误报率
误报杀软
24
更新机制
应用内自动更新,pyupdater、Esky、自定义方案
更新自动
25
Docker打包
Docker交叉编译Linux发行版,解决glibc依赖
Dockerglibc
26
Qt资源系统
PyQt5/PySide6 qrc资源系统,避免图标丢失
Qtqrc
27
数据库打包
SQLite/MySQL客户端嵌入,数据库文件分发策略
数据库SQLite
28
命令行工具打包
Python脚本→跨平台命令行工具,stdin/stdout参数传递
CLI命令行
29
Web应用打包
PyWebIO/Streamlit Web应用打包成桌面应用
Web桌面
30
综合实战
从零打包完整项目(GUI+数据库+网络+多线程),全流程避坑
实战完整