制作成可执行文件
掌握 PyInstaller 打包 Python 程序的方法
熟练使用常用打包参数优化打包结果
能解决打包常见问题:体积大、报错、误报毒
核心讲解
PyInstaller 是最主流的 Python 打包工具,可以把.py 脚本打包成 Windows 的.exe、macOS 的.app、Linux 的可执行文件,对方电脑不需要安装 Python 就能运行。
(1)安装
pip install pyinstaller
(2)核心打包参数
表格
参数 | 作用 |
|---|---|
| 打包成单个可执行文件,方便分发 |
| 打包成文件夹(默认),启动更快,适合内部使用 |
| 无控制台窗口,GUI 程序必加,命令行程序不要加 |
| 指定程序图标,格式为.ico |
| 指定生成的可执行文件名 |
| 添加额外数据文件(图片、配置等) |
| 同 - w,隐藏控制台 |
| 清理缓存重新打包 |
(3)打包流程
先确保程序在本地正常运行
打开命令行,进入脚本所在目录
执行打包命令
打包完成后,在 dist 目录找到可执行文件
(4)体积优化
虚拟环境打包:只装需要的库,避免把全局环境的多余库打进去
--exclude-module排除不需要的模块用 UPX 压缩:进一步减小体积
导入时精确导入,不要
import *
代码示例
# ===== 基础打包命令 =====
# 1. 单文件打包(最常用)
pyinstaller -F main.py
# 2. 无控制台窗口(GUI程序)
pyinstaller -F -w main.py
# 3. 指定图标和程序名
pyinstaller -F -w -i app.ico --name 我的程序 main.py
# 4. 带数据文件打包
# Windows下分号分隔,Linux/macOS用冒号
pyinstaller -F --add-data "data;data" main.py
# 5. 清理缓存重新打包
pyinstaller -F --clean main.py
# ===== 优化体积打包 =====
# 1. 先创建虚拟环境,只安装需要的依赖
# 2. 排除不必要的模块
pyinstaller -F --exclude-module tkinter --exclude-module unittest main.py
# 3. 配合UPX压缩(需下载UPX)
pyinstaller -F --upx-dir upx路径 main.py
打包示例说明
最简单的打包测试
新建
hello.py,写入print("Hello 打包成功!")和input()命令行执行
pyinstaller -F hello.py打开 dist 文件夹,运行
hello.exe,看到输出即成功
GUI 程序打包
tkinter、PyQt 等 GUI 程序,一定要加
-w参数,否则会弹出黑框注意图片、配置文件要用
--add-data打包进去
常见误区
打包后运行一闪而过:命令行程序不加
-w,或者程序结束自动退出,加个input()暂停体积太大:默认打包会带很多没用的库,一定要在纯净虚拟环境里打包
杀毒软件误报:PyInstaller 打包的程序很容易被杀毒误报,加白名单或者用签名
路径问题:打包后当前目录变了,相对路径读文件会出错,要用
sys._MEIPASS获取临时目录缺少依赖:动态导入的库可能检测不到,需要手动指定
--hidden-import跨平台问题:Windows 打包的 exe 只能在 Windows 用,macOS 打包的只能在 macOS 用,不能跨平台
课后练习
把一个简单的 Python 脚本打包成单个 exe 文件
给打包的程序指定一个图标
尝试打包一个带图片的 GUI 程序,确保图片能正常加载
用虚拟环境重新打包,对比体积差异

