说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gr99123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
在 Python 开发中,管理不同项目的依赖和运行环境一直是一个常见但又容易出错的任务。传统工具如 pip + venv、virtualenv、conda 或 poetry 各有优势,但也存在速度慢、配置复杂或兼容性问题。
近年来,由 Astral 团队(也是 Ruff 的开发者)推出的 uv 工具正在迅速改变这一局面。uv 是一个用 Rust 编写的超快 Python 包安装器和解析器,兼容 pip 和 virtualenv 的工作流,同时提供了更现代化的多环境管理能力。
本文将介绍如何使用 uv 高效地管理多个 Python 项目环境,提升你的开发体验。
uv 是一个高性能的 Python 包管理工具,具有以下特点:
venv.toml(PEP 621)、requirements.txt、pyproject.toml 等格式uv 的目标不是取代 pip,而是提供一个更快、更可靠的替代方案,尤其适合 CI/CD 和本地多项目开发场景。
uv 支持跨平台(Windows/macOS/Linux),安装非常简单:
# 使用 curl 安装(推荐)
curl -LsSf https://astral.sh/uv/install.sh | sh
# 或使用 PowerShell(Windows)
irm https://astral.sh/uv/install.ps1 | iex
安装完成后,重启终端或运行:
source ~/.cargo/env # Linux/macOS
验证安装:
uv --version
# 输出类似:uv 0.4.13 (...)
假设你有两个项目:
project-a:使用 Python 3.9,依赖 Django 4.2project-b:使用 Python 3.11,依赖 FastAPI 和 Pydantic v2我们希望为每个项目创建独立的虚拟环境,并快速切换。
uv 可以自动检测系统中已安装的 Python 版本,或从 pyenv、asdf 等工具中读取。
# 进入 project-a 目录
cd project-a
# 创建基于 Python 3.9 的虚拟环境
uv venv --python 3.9
这会在当前目录下生成一个 .venv 文件夹(可自定义路径)。
同样地:
cd ../project-b
uv venv --python 3.11
💡 提示:uv 会优先使用
pyproject.toml中声明的requires-python字段自动选择版本!
uv 不强制你“激活”环境(像传统 shell 激活那样),而是通过 uv run 或 uv pip install 在指定环境中操作。
uv pip install# 在 project-a 中安装依赖
cd project-a
uv pip install django==4.2
uv 会自动在 .venv 中安装包,无需手动激活。
requirements.txtuv pip install -r requirements.txt
pyproject.toml(PEP 621)如果你的 pyproject.toml 包含:
[project]
dependencies = ["fastapi", "uvicorn"]
requires-python = ">=3.11"
只需运行:
uv pip install .
使用 uv run 可确保命令在正确的虚拟环境中执行:
# project-a
cd project-a
uv run python manage.py runserver
# project-b
cd project-b
uv run uvicorn main:app --reload
uv run 会自动查找最近的 .venv 并使用它,避免了手动 source .venv/bin/activate 的麻烦。
如果你尚未安装所需 Python 版本,uv 本身不负责安装解释器,但可以与 pyenv 配合:
# 安装 Python 3.9 和 3.11(通过 pyenv)
pyenv install 3.9.18
pyenv install 3.11.9
# 设置全局或局部版本
pyenv local 3.9.18 # 在 project-a 目录下
然后 uv 会自动识别 pyenv 提供的版本:
uv venv # 自动使用 pyenv local 指定的版本
uv venv --show
# 显示当前 .venv 的 Python 路径、版本等
uv pip list
uv pip freeze > requirements.txt
uv cache clean
| 功能 | pip + venv | poetry | conda | uv |
|---|---|---|---|---|
| 安装速度 | 慢 | 中等 | 慢 | ⚡ 极快 |
| 虚拟环境管理 | 手动 | 内置 | 内置 | ✅ 自动 + 智能 |
| 多 Python 版本支持 | 需手动指定 | 有限 | 强大 | ✅ 依赖系统/版本管理器 |
| 兼容现有项目 | ✅ | ❌(需迁移) | ⚠️(生态隔离) | ✅ 完全兼容 pip |
| CLI 体验 | 繁琐 | 统一但学习成本高 | 复杂 | 简洁直观 |
uv 正在成为 Python 依赖管理的新标准。它结合了速度、兼容性和易用性,特别适合需要频繁切换项目、管理多 Python 版本的开发者。
通过 uv venv + uv pip install + uv run 的组合,你可以:
如果你还在忍受缓慢的 pip install 或复杂的环境配置,现在是时候尝试 uv 了!
🔄 小贴士:uv 仍在快速发展中,建议定期更新以获取最新功能:
uv self update
Happy coding with uv! 🐍✨
更新时间:2025-11-23 10:32:25 标签:python uv 依赖管理 虚拟环境 多环境开发