5. 多项目隔离与日常切换
这是什么:多项目隔离 = 每个项目自带一个 .venv 环境文件夹,各自装各自的包,互不打扰。
为什么用:单环境会玩了,正餐是同时养多个项目:A 用 Flask 2、B 用 Flask 3、C 要 Python 3.12,它们得在同一台电脑上和平共存。
如何用:本章先摆出经典目录布局,再讲怎么按项目激活、怎么排查「装错地方」的混乱。
5.1 经典目录布局
每个项目自带环境,一目了然搬家友好:
work/
├── blog-old/
│ ├── .venv/
│ ├── requirements.txt
│ └── app.py
├── spider/
│ ├── .venv/
│ ├── requirements.txt
│ └── main.py
└── ml-playground/
├── .venv/
└── requirements.txt
信条:一个项目 = 一个 .venv + 一份清单。环境跟项目走,删项目删整目录,拖泥带水为零。
5.2 版本对照实验(亲自验证隔离)
三个项目分别装不同 Flask 版本:
# blog-old
(.venv) pip install "flask==2.2.5"
# spider
(.venv) pip install "flask==3.1.0"
# ml-playground
(.venv) pip uninstall flask
各自 pip list | grep -i flask 验证——三个世界各说各话,升级谁都不影响别人。
第 2 章说过:激活只影响当前终端。所以同时开三个终端、三个项目同步开发完全没问题——每个窗口各管各的环境。
5.3 日常切换的三步节奏
# 开始干活:进入项目 → 激活
cd work/spider
.venv\Scripts\Activate.ps1 # (macOS/Linux: source .venv/bin/activate)
# 干活中:改代码、pip install…(新依赖记得更新 requirements.txt)
# 收工:直接关终端(自动退出)
没有「全局注册/切换器」——venv 的哲学就是零全局状态,每个终端 declaring 自己在哪个世界。
5.4 常见混乱现场与排查
| 症状 | 原因 | 修法 |
|---|---|---|
ModuleNotFoundError: flask |
忘了激活,跑在全局里 | 激活后重跑 |
| 装了包还是报找不到 | pip -V 路径不在这个环境 | 见第 3 章,方向装错 |
| 新终端「包消失了」 | 新终端没激活 | 重跑激活命令 |
| 版本不对 | 找到的是旧环境 | 确认项目目录与 pip show |
三问定位法:提示符有 (.venv) 吗?pip -V 路径对吗?pip list 里有这个包吗? 基本包治一切「环境玄学」。
5.5 动手改
- 搭出 5.1 的三项目布局(可先只建环境不写代码)
- 分别装不同版本 flask 并
pip show对照三个终端 - 关终端重开,练 5.3 的三步节奏直到肌肉记忆
5.6 小结
- 一个项目 = 一个
.venv+ 一份清单,环境跟项目走 - 激活 = 终端级状态,多终端多项目并行毫无冲突
- 无限心智稳定法:提示符 → pip -V → pip list 三连自检
下一章:IDE 配合:VSCode 与 PyCharm 🐸