PyInstaller 速查手册
把 Python 脚本打包成 exe
|--------|--------------------------------------|
| 项目 | 内容 |
| 前置要求 | 已装 Python 3.9+ ;脚本用到的库(如 pandas )已装好 |
| 耗时 | 首次约 5 分钟,之后重打包约 1 分钟 |
| 适用系统 | Windows 10 及以上 |
目录
[一、安装 PyInstaller(只装一次)](#一、安装 PyInstaller(只装一次))
[二、在 PyCharm 终端打包(推荐方式)](#二、在 PyCharm 终端打包(推荐方式))
[三、终端目录不对?用 cd 切换](#三、终端目录不对?用 cd 切换)
[五、找到并使用 exe](#五、找到并使用 exe)
[七、常见问题 FAQ](#七、常见问题 FAQ)
一、安装 PyInstaller(只装一次)
PyInstaller 是打包工具:把你的脚本 + Python 解释器 + 所有依赖库压进一个 exe,对方电脑不装 Python 也能双击运行。
在 PyCharm 终端(见下一节怎么打开)或 cmd 里执行:
pip install pyinstaller
成功标志:最后出现 Successfully installed pyinstaller-x.x.x。
⚠️ 若提示 'pip' 不是内部或外部命令,说明 Python 没加入环境变量,先修 Python 安装。也可以改用 python -m pip install pyinstaller。
二、在 PyCharm 终端打包(推荐方式)
(一)打开 PyCharm 终端
PyCharm 窗口底部 找到「Terminal / 终端」标签,点一下就打开了(找不到的话:菜单 View → Tool Windows → Terminal)。
终端会自动定位在当前项目根目录 ,比如:
PS C:\Users\你的用户名\PyCharmMiscProject>
(二)在终端里执行打包
先确认终端已切到脚本所在文件夹(下一节讲怎么切),然后执行:
python -m PyInstaller --onefile --console --clean --name "下单计划调整工具V3-2" "V3-2-下单计划调整.py"
💡 在 PyCharm 终端里推荐用 python -m PyInstaller 而不是直接敲 pyinstaller------它保证用的是当前项目解释器 里装的 PyInstaller 和依赖库,打包出来的 exe 才不缺库。
(三)成功标志
INFO: Building EXE from EXE-00.toc completed successfully.
INFO: Build complete! The results are available in: ...dist
三、终端目录不对?用 cd 切换
现象 :PyCharm 终端打开在项目根目录(如 C:\...\PyCharmMiscProject),但脚本在子文件夹里(如 PyCharmMiscProject\下单计划调整),直接跑打包命令会报"找不到文件"。
(一)解决:cd 到脚本所在文件夹
cd 下单计划调整
cd = change directory(切换目录)。执行后再看终端提示符,路径末尾变成 \下单计划调整> 就对了。
(二)常用目录命令速记
|---------|-------------------|-----------|
| 命令 | 作用 | 例子 |
| cd 文件夹名 | 进入下一级文件夹 | cd 下单计划调整 |
| cd .. | 退回上一级 | cd .. |
| cd \ | 回到当前盘根目录 | cd \ |
| 盘符: | 切换到其他盘(先切盘符再 cd ) | D: |
| dir | 列出当前文件夹内容,确认脚本在不在 | dir |
💡 懒人技巧:在终端里输入 cd (后面带空格),把脚本所在文件夹直接拖进终端窗口 ,路径自动补全,回车即切换。
(三)为什么必须先切目录
打包命令里写的脚本文件名不带路径,终端只会在当前所在文件夹 里找它。目录不对,人就找不到。
四、打包命令参数说明
pyinstaller --onefile --console --clean --name "下单计划调整工具V3-2" "V3-2-下单计划调整.py"
|--------------|-------------------|-------------------------|
| 部分 | 含义 | 不写会怎样 |
| --onefile | 打成单个 exe ,依赖全在里面 | 生成一个文件夹,分发容易漏文件 |
| --console | 保留黑色窗口,能看到运行进度和提示 | 运行时静默,以为卡死了 |
| --clean | 打包前清掉上次缓存 | 可能把旧代码打进新 exe |
| --name "xxx" | exe 的名字 | 默认用脚本文件名 |
| "脚本.py" | 要打包的脚本,写在最后 | 文件名写错报 script not found |
五、找到并使用 exe
打包完成后,脚本文件夹里多出 3 样东西:
|----------|--------------------|----------|
| 名称 | 是什么 | 处理 |
| dist/ | 成品文件夹,exe 就在里面 | 从这里拿 exe |
| build/ | 打包临时文件 | 可整个删掉 |
| xxx.spec | 打包配置记录 | 留着即可 |
怎么用
- 把 exe 和它需要的源表文件放在同一个文件夹 (本例脚本按文件名关键词找文件,文件名别改掉关键词,如"物料下单计划明细"、"采购分配")
- 双击 exe,黑窗口显示进度
- 跑完后结果文件生成在同一文件夹(本例是 调整-V1-xxx.xlsx),按回车关窗口
发给别人:只发 exe 一个文件即可,对方需为 Windows 系统。
六、代码改了怎么重新打包
改了 .py 后,exe 里仍是旧版本。重新打包只需两步:
- 在 PyCharm 里保存修改(Ctrl + S)
- 在终端里原样再跑一遍打包命令 (有 --clean 不怕缓存),新 exe 自动覆盖 dist 里的旧的
七、常见问题 FAQ
FAQ-1:exe 被杀毒软件报毒/删除
PyInstaller 的已知误报,exe 本身没问题。在杀毒软件里加入信任/白名单即可。
FAQ-2:双击 exe 后黑窗一闪就没
脚本启动即报错。排查:Win + R → cmd,把 exe 拖进窗口回车运行,窗口不关,能看到报错。
FAQ-3:报错 ModuleNotFoundError: No module named 'xxx'
打包时用的环境里没装这个库。先 pip install 库名,再重新打包。
FAQ-4:命令报错 'pyinstaller' 不是内部或外部命令
改用 python -m PyInstaller ...(前面加 python -m),效果一样。
FAQ-5:想换 exe 图标
pyinstaller --onefile --console --clean --icon="图标.ico" --name "新名字" "脚本.py"
图标必须是 .ico 格式。
附录:一页速查
0. PyCharm 底部打开 Terminal,cd 到脚本所在文件夹
cd 下单计划调整
1. 首次使用,装工具(只装一次)
python -m pip install pyinstaller
2. 打包(代码改了就重跑这条)
python -m PyInstaller --onefile --console --clean --name "exe名字" "脚本文件.py"