一句话原则(你以后只记这 3 条)
记住这三条,PyInstaller 永不翻车:
1️⃣ 一个项目 = 一个虚拟环境(venv)
2️⃣ 永远用 python -m PyInstaller,不用 pyinstaller
3️⃣ venv 里只装脚本真正用到的包
二、以后【新脚本】的标准流程(完整模板)
假设你要打包一个新脚本:
① 新项目 = 新虚拟环境(强烈建议)
bash
cd E:\workspace\python\新项目
python -m venv venv
.\venv\Scripts\activate
确认:
bash
where python
必须是:
powershell
...\新项目\venv\Scripts\python.exe
② 只安装你这个脚本真正需要的包
比如你这个新脚本:
用途 包
powershell
PDF pymupdf
Excel openpyxl
HTTP requests
那就:
powershell
pip install pymupdf pyinstaller
❌ 不要提前装 pandas / tensorflow / torch
③ 快速自检(30 秒)
bash
pip list
理想状态:
bash
pip
setuptools
pymupdf
pyinstaller
👉 多出来的库 = 未来风险
④ 标准打包命令(以后统一用)
bash
python -m PyInstaller ^
-F ^
-w ^
-i app.ico ^
--clean ^
--collect-all fitz ^
newTool.py
💡 没 GUI 就去掉 -w,方便看报错
⑤ 成品在哪
bash
dist\
└─ newTool.exe
三、【强烈推荐】给自己准备一个通用 build.bat
你以后 双击就能打包
powershell
build.bat(通用版)
@echo off
echo =====================================
echo Build EXE
echo =====================================
call venv\Scripts\activate
python -m PyInstaller ^
-F ^
-w ^
-i app.ico ^
--clean ^
--collect-all fitz ^
newTool.py
pause
👉 以后新脚本只改这两行:
powershell
-i app.ico
newTool.py
四、如果一个项目有【多个脚本要打包】
推荐结构:
bash
project/
│
├─ venv/
│
├─ tools/
│ ├─ pdf_mask.py
│ ├─ excel_clean.py
│ └─ merge_pdf.py
│
├─ build_pdf.bat
├─ build_excel.bat
└─ build_merge.bat
每个 bat 都用:
bash
call venv\Scripts\activate
python -m PyInstaller ...
共享一个 venv,但依赖必须干净
五、如果新脚本用到"重库"怎么办?
比如:
- pandas
- openpyxl
- pillow
- requests
👉 完全没问题,但要记住:
最佳实践
✅ 正确做法 :为每个项目单独创建虚拟环境(venv)
❌ 错误做法 :在同一个虚拟环境中安装数十个库
⚠️ 注意事项:避免将项目A的虚拟环境直接用于项目B做法 对不对