把 Python 脚本打包成 exe

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 | 打包配置记录 | 留着即可 |

怎么用

  1. 把 exe 和它需要的源表文件放在同一个文件夹 (本例脚本按文件名关键词找文件,文件名别改掉关键词,如"物料下单计划明细"、"采购分配")
  2. 双击 exe,黑窗口显示进度
  3. 跑完后结果文件生成在同一文件夹(本例是 调整-V1-xxx.xlsx),按回车关窗口

发给别人:只发 exe 一个文件即可,对方需为 Windows 系统。

六、代码改了怎么重新打包

改了 .py 后,exe 里仍是旧版本。重新打包只需两步:

  1. 在 PyCharm 里保存修改(Ctrl + S)
  2. 在终端里原样再跑一遍打包命令 (有 --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"

3. 成品在 dist 文件夹;build 可删,.spec 留着

相关推荐
萧鼎1 小时前
Python 数据验证神器 Pydantic:数据解析与验证、设置管理、JSONSche、与ORM集成全搞定
开发语言·python
529宝宝起名网2 小时前
用 Python 开发名字字源查询工具:从甲骨文到楷书的字形演变与文化寓意解析
开发语言·python
2601_962300472 小时前
学习Python 爬虫路线
爬虫·python·学习路线·数据解析·反爬虫
隐擎fox2 小时前
跨越传输层防线:深入 TCP/IP 协议栈指纹(p0f)原理与 Python 原始套接字检测实战
python·网络协议·tcp/ip·网络安全·dns
午彦琳2 小时前
2026.9.11
数据结构·python·算法
新时代牛马3 小时前
ATF/ TEE / REE 与ARM 异常级别EL 安全体系完整篇:TrustZone硬件到 SMC 进OP-TEE的全链路
arm开发·python·安全
寥落半伤感3 小时前
在Pycharm中一键迅速安装包及查看虚拟环境中包名的方法
ide·python·pycharm
呆呆在发呆.3 小时前
Agnet狼人杀
人工智能·python·microsoft
hhzz3 小时前
【OpenCV 入门到精通 04】视频入门与绘图交互:从摄像头到鼠标画笔
人工智能·python·opencv·计算机视觉·音视频·交互