Python虚拟环境

Python 虚拟环境:别再把所有项目塞进一个”大仓库”了

你有没有遇到过这种情况:

项目 A 用的是 Django 2.0,项目 B 用的是 Django 4.0。你在项目 B 里 pip install django==4.0,结果项目 A 启动就报错。改回去呢,项目 B 又跑不起来。

这就是典型的”依赖冲突”——所有项目共用一套全局 Python 环境,不同项目对同一个库的不同版本要求互相打架。

虚拟环境解决的就是这个问题:每个项目有自己的独立环境,各用各的版本,互不干扰。

虚拟环境是什么?打个比方

把你电脑上的 Python 想象成一个”公共图书馆”(全局环境)。所有项目都从这个图书馆借书(第三方库)。

  • 项目 A 要借 Django 2.0
  • 项目 B 要借 Django 4.0
  • 图书馆里只能放一个版本的书

虚拟环境就是给每个项目盖了一个独立的”小书房”——项目 A 的书房里有 Django 2.0,项目 B 的书房里有 Django 4.0,互不影响。

全局 Python 环境(系统)
├── 项目 A 的虚拟环境
│   ├── Django 2.0
│   └── requests 2.28
└── 项目 B 的虚拟环境
    ├── Django 4.0
    └── numpy 1.24

核心好处:

  • 每个项目的依赖互不干扰
  • 系统 Python 环境保持干净
  • 通过 requirements.txt 可以一键复现环境
  • 不同项目可以用不同 Python 版本

核心工具:venv(Python 3.3+ 自带,不用装)

venv 是 Python 官方自带的虚拟环境工具,最轻量、最通用、最适合新手。不需要额外安装,直接用。

1. 创建虚拟环境

cd my_project
python -m venv .venv

.venv 是虚拟环境的目录名,可以改成别的(比如 venvenv),但 .venv 是常见惯例——以点开头在 Linux/Mac 上是隐藏目录,不容易误删。

2. 激活虚拟环境

激活之后,命令行前面会出现 (.venv) 提示,表示你现在在这个虚拟环境里工作。

系统 激活命令
macOS / Linux source .venv/bin/activate
Windows CMD .venv\Scripts\activate.bat
Windows PowerShell .venv\Scripts\Activate.ps1

验证激活成功:

which python   # 应该显示 .venv/bin/python,不是系统 Python
pip list       # 应该只有 pip 和 setuptools,干净的

3. 安装依赖

激活后,pip install 的包都装到这个虚拟环境里,不会污染全局。

pip install django requests

4. 退出虚拟环境

deactivate

5. 删除虚拟环境

直接把 .venv 文件夹删掉就行,不影响任何东西。

rm -rf .venv   # macOS/Linux
rmdir /s .venv # Windows

依赖管理:requirements.txt

虚拟环境能让依赖不冲突,但如果你换了一台电脑,怎么把同样的环境复现出来?

导出依赖:

pip freeze > requirements.txt

生成的 requirements.txt 长这样:

Django==4.2.0
requests==2.31.0
numpy==1.24.3

在新电脑上安装:

pip install -r requirements.txt

一个关键区分:

  • pip freeze:导出当前环境所有已安装的包(包括间接依赖)
  • pip list:列出当前环境所有包(不带版本号约束)

requirements.txt 一般提交到 Git,.venv 文件夹不提交(加 .gitignore)。

.gitignore 里加这几行:

.venv/
venv/
env/
__pycache__/
*.pyc

IDE 集成:不用手动敲命令

VS Code:

  1. 打开项目文件夹
  2. Cmd+Shift+P(Mac)或 Ctrl+Shift+P(Windows)
  3. 输入 Python: Select Interpreter
  4. 选择 .venv 目录下的 Python 解释器

VS Code 会自动在终端里激活虚拟环境。

PyCharm:

新建项目时选 “New environment using Virtualenv”,PyCharm 自动创建并激活。

现有项目在 SettingsProjectPython Interpreter 里添加 .venv 解释器。

标准工作流

# 1. 新建项目
mkdir my_project && cd my_project

# 2. 创建虚拟环境
python -m venv .venv

# 3. 激活
source .venv/bin/activate

# 4. 安装需要的包
pip install django requests

# 5. 导出依赖(提交到 Git)
pip freeze > requirements.txt

# 6. 写代码...

# 7. 退出
deactivate

换一台电脑复现:

git clone <repo>
cd my_project
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python manage.py runserver