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 是虚拟环境的目录名,可以改成别的(比如 venv、env),但 .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:
- 打开项目文件夹
- 按
Cmd+Shift+P(Mac)或Ctrl+Shift+P(Windows) - 输入
Python: Select Interpreter - 选择
.venv目录下的 Python 解释器
VS Code 会自动在终端里激活虚拟环境。
PyCharm:
新建项目时选 “New environment using Virtualenv”,PyCharm 自动创建并激活。
现有项目在 Settings → Project → Python 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