python打包PyInstaller程序,怎么越来越大,如何解决?

一句话原则(你以后只记这 3 条)

记住这三条,PyInstaller 永不翻车:

1️⃣ 一个项目 = 一个虚拟环境(venv)

2️⃣ 永远用 python -m PyInstaller,不用 pyinstaller

3️⃣ venv 里只装脚本真正用到的包

二、以后【新脚本】的标准流程(完整模板)

假设你要打包一个新脚本:

newTool.py

① 新项目 = 新虚拟环境(强烈建议)

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做法 对不对

相关推荐
SmartRadio15 小时前
CH585M+MK8000、DW1000 (UWB)+W25Q16的低功耗室内定位设计
c语言·开发语言·uwb
rfidunion15 小时前
QT5.7.0编译移植
开发语言·qt
少林码僧15 小时前
2.31 机器学习神器项目实战:如何在真实项目中应用XGBoost等算法
人工智能·python·算法·机器学习·ai·数据挖掘
rit843249915 小时前
MATLAB对组合巴克码抗干扰仿真的实现方案
开发语言·matlab
智航GIS16 小时前
10.4 Selenium:Web 自动化测试框架
前端·python·selenium·测试工具
jarreyer16 小时前
摄像头相关记录
python
宝贝儿好16 小时前
【强化学习】第六章:无模型控制:在轨MC控制、在轨时序差分学习(Sarsa)、离轨学习(Q-learning)
人工智能·python·深度学习·学习·机器学习·机器人
大、男人16 小时前
python之asynccontextmanager学习
开发语言·python·学习
hqwest16 小时前
码上通QT实战08--导航按钮切换界面
开发语言·qt·slot·信号与槽·connect·signals·emit
AC赳赳老秦16 小时前
DeepSeek 私有化部署避坑指南:敏感数据本地化处理与合规性检测详解
大数据·开发语言·数据库·人工智能·自动化·php·deepseek