
操作耗时:1分钟 核心命令:
pip install pyinstaller
安装完成后,输入 pyinstaller --version 验证是否成功。如果遇到网络问题,可尝试切换国内镜像源(如清华源)
适用场景:简单脚本、命令行工具 操作步骤:
创建一个测试脚本 hello.py,内容如下:
print("Hello, 我是被PyInstaller打包的EXE!")
input("按回车键退出...")
在脚本目录打开命令行,执行:
pyinstaller --onefile hello.py
--onefile:将所有内容打包成单个EXE文件,方便分发。生成的EXE文件位于 dist 文件夹中,双击即可运行
进阶选项:
--noconsole,避免弹出命令行窗口
--icon=app.ico 指定EXE图标(需ICO格式)
常见痛点:图片加载失败、配置文件丢失、第三方库未识别 解决方案:
添加资源文件
若代码中引用了图片、音频等文件,需通过 --add-data 手动打包:
pyinstaller --add-data "images/*.png;images" --add-data "config.ini;." app.py
源路径;目标路径(Windows用分号 ;,Linux/macOS用冒号 :)
强制引入隐藏依赖
某些库(如动态导入的模块)可能未被自动检测,需通过 --hidden-import 声明:
pyinstaller --hidden-import=pandas --hidden-import=sklearn model.py
适用场景:多文件项目、重复打包、复杂依赖 操作流程:
生成初始配置文件:
pyi-makespec --onefile app.py
编辑 app.spec 文件,关键参数示例:
a = Analysis(
['app.py'],
datas=[('assets/*.png', 'assets')], # 添加资源文件夹
hiddenimports=['numpy'], # 强制引入依赖
...
)
exe = EXE(
...,
icon='app.ico', # 指定图标
console=False# 隐藏控制台
)
根据 .spec 文件重新打包:
pyinstaller app.spec
痛点:默认打包的EXE文件动辄几十MB,如何压缩? 实战技巧:
使用UPX压缩
(可减少30%-50%体积):
pyinstaller --onefile --upx-dir=C:\upx app.py 剔除无用库
pyinstaller --exclude-module=matplotlib --exclude-module=scipy app.py
启用虚拟环境
:在纯净的虚拟环境中打包,避免引入冗余依赖
常见错误:文件路径错误、DLL缺失、兼容性问题 排查方法:
保留控制台查看报错
:去掉 --noconsole 参数,运行EXE时观察错误信息。
动态路径处理
:在代码中兼容打包后的资源路径:
import sys, os
ifgetattr(sys, 'frozen', False):
base_path = sys._MEIPASS # 打包后的临时资源目录
else:
base_path = os.path.dirname(__file__)
image_path = os.path.join(base_path, 'assets/logo.png')
跨平台测试
:在不同Windows版本(如Win10/Win11)及位数(32/64位)环境中验证兼容性
requirements.txt 中固定版本号,确保打包环境与开发环境一致