🐸 青蛙编程网
首页 / Python / 虚拟环境 venv / 1. 虚拟环境是什么

1. 虚拟环境是什么

这是什么:虚拟环境(venv) = 一个独立、私有的 Python 副本,有自己的解释器入口和自己的包目录,每个项目各有一个世界。

为什么用:全局装包只有一个版本坑位:A 项目要 Flask 2.x,B 项目要 Flask 3.x,装谁都会弄崩另一个,这叫依赖地狱。

如何用:本章先看没有它时的惨案,再看清隔离是怎么解决的,你就明白为什么每个项目都要开一个环境。

1.1 先看没有它的惨案

假设你只有一套全局 Python,第三个项目接踵而来:

# 项目 A:Flask 2.x 写的老代码
# 项目 B:某库要求 Flask 3.x
pip install flask          # 装一个,另一个崩

这就是 依赖地狱(dependency hell):不同项目需要同一批库的不同版本,而全局装包只有一个版本坑位。更糟的是——卸载 A 项目的依赖时,可能顺手拆掉 B 需要的东西。

1.2 虚拟环境怎么解决

每个项目开一个「平行世界」,世界里的 pip 只影响本世界:

项目A/.venv   → Flask 2.0
项目B/.venv   → Flask 3.1
(互不可见、互不影响)

你还可以随意删掉一个世界重建(删文件夹即可),全局 Python 分毫未损。

对比项 全局装包 虚拟环境
版本冲突 一套版本,互相打架 每项目一套,随你摆
卸载 牵一发动全身 删目录 = 一干二净
部署复现 不知道装过什么 快照式依赖清单
团队协作 「我这里能跑」玄学 清单 + 环境,人人一致

1.3 三条真理

  1. Python 自带 venv 模块——不用装任何东西(Python 3.3+)
  2. 虚拟环境只是个文件夹(惯例名 .venv),里面装着一个专属的 Python
  3. 「激活」只是让当前终端指向这个文件夹里的解释器,不是格式化系统

社区通用惯例:一个项目目录 + 一个 .venv 目录。.gitignore 里把 .venv/ 排除(第 4 章验证)。

1.4 动手改

  1. 确认 Python 版本:python --version(3.3+ 都有 venv)
  2. 在任一目录 python -m site,看看「全局」的包都躺在哪里(对照下一章的结果)

1.5 小结

  • 全局装包 → 依赖地狱;虚拟环境 → 每项目一个隔离世界
  • venv 内置无依赖,环境就是一个文件夹
  • 激活 = 当前终端使用环境内的解释器

下一章:创建与激活第一个虚拟环境 🐸

📥 下载本章代码

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