🐸 青蛙编程网
首页 / Python / 虚拟环境 venv / 5. 多项目隔离与切换

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 动手改

  1. 搭出 5.1 的三项目布局(可先只建环境不写代码)
  2. 分别装不同版本 flask 并 pip show 对照三个终端
  3. 关终端重开,练 5.3 的三步节奏直到肌肉记忆

5.6 小结

  • 一个项目 = 一个 .venv + 一份清单,环境跟项目走
  • 激活 = 终端级状态,多终端多项目并行毫无冲突
  • 无限心智稳定法:提示符 → pip -V → pip list 三连自检

下一章:IDE 配合:VSCode 与 PyCharm 🐸

📥 下载本章代码

ZIP 内含本章全部代码文件与说明,解压即用,与教程内容同步生成。