Python 版本管理与环境隔离
venv 管虚拟环境,标准库自带。追求速度的用 uv,一个工具全包了。
相关文档:venv (opens new window) | uv (opens new window) | Conda (opens new window)
# venv — 虚拟环境(标准库自带)
每个项目建个独立的虚拟环境,把依赖关在里面,互不污染。
# 创建和激活
# 在项目目录创建虚拟环境(名为 .venv)
python -m venv .venv
# 激活
source .venv/bin/activate # Linux / macOS
.venv\Scripts\activate # Windows CMD
.venv\Scripts\Activate.ps1 # Windows PowerShell
# 退出虚拟环境
deactivate
激活后命令行前面会出现 (.venv) 标识,此时 pip 装的包都在这个环境里,不污染全局。
# 日常使用
# 确认在虚拟环境中
which python # 应该指向 .venv/bin/python
# 安装依赖
pip install requests flask
# 导出依赖清单
pip freeze > requirements.txt
# 从清单安装
pip install -r requirements.txt
# 删除虚拟环境(直接删目录就行)
rm -rf .venv
.venv/ 加进 .gitignore:
.venv/
__pycache__/
# uv — 新一代全能工具(推荐)
uv (opens new window) 是 Rust 写的,比 pip 快 10-100 倍,一个工具替代 venv + pip + pip-tools,还能管理 Python 版本本身。
# 安装
curl -LsSf https://astral.sh/uv/install.sh | sh
# Python 版本管理
# 安装指定版本的 Python(uv 自己管,不依赖系统)
uv python install 3.12
uv python install 3.11
# 查看已安装版本
uv python list
# 固定项目 Python 版本
uv python pin 3.12 # 生成 .python-version 文件
# 项目管理
# 初始化新项目
uv init my-project
cd my-project
# 添加依赖(自动创建虚拟环境)
uv add requests flask
uv add --dev pytest # dev 依赖
# 移除依赖
uv remove requests
# 同步依赖(按 pyproject.toml 安装)
uv sync
# 运行脚本(自动用项目的虚拟环境,不需要手动 activate)
uv run python main.py
uv run pytest
# 虚拟环境操作
# uv 默认把虚拟环境建在 .venv/ 目录
# 激活方式跟标准 venv 一样
source .venv/bin/activate
# 或者不激活,直接 uv run,省事
uv run python script.py
# 从旧项目迁移
# 有 requirements.txt 的老项目,一键迁移
uv add -r requirements.txt
# 导出 requirements.txt(兼容老项目)
uv pip compile -o requirements.txt
# 为什么用 uv
| 对比项 | pip + venv | uv |
|---|---|---|
| 安装速度 | 慢 | 快 10-100 倍 |
| Python 版本管理 | 需要额外工具 | 内置 |
| 虚拟环境 | 手动创建激活 | 自动 |
| 依赖解析 | 基础 | 严格(像 poetry) |
| 锁文件 | 无(pip freeze) | uv.lock 精确锁定 |
| 工具链 | pip + venv + pip-tools | 一个 uv 全包 |
上次更新: 2026/08/18, 01:07:41