在 Python 的世界里,我们常用 pip
安装依赖,用 venv
创建虚拟环境,还可能用 pip-tools
来生成锁文件。这些工具虽然灵活,但组合使用时也容易让人混乱。最近,一个名叫 uv 的新工具火了起来,目标是统一和简化整个 Python 包管理流程。
uv
是什么?
uv
是由 Astral 开发的一个超快的 Python 包管理器,用 Rust 编写。它旨在作为 pip
、pip-tools
、virtualenv
和 python-build
的整合替代品。
主要特点:
🚀 极致性能:安装速度比传统
pip
快数倍📦 自带虚拟环境管理:无需再手动创建
.venv
🔒 支持依赖锁定:自动生成兼容的 lock 文件
🧰 一体化工具链:不再需要搭配多个工具
🐍 支持多 Python 版本管理(重点!)
安装 uv
(支持 Windows / macOS / Linux)
🖥 macOS
brew install uv
🐧 Linux
官方脚本(推荐)
curl -Ls https://astral.sh/uv/install.sh | bash
🪟 Windows
手动下载可执行文件
前往 GitHub Releases 下载 .exe
并添加到 PATH。
基本用法入门
创建虚拟环境
uv venv
安装依赖
uv pip install requests
锁定依赖
uv pip compile -o requirements.txt
同步环境
uv pip sync
启动项目解释器
uv python
管理多个虚拟环境
uv
使用“每个项目一个 .venv
”的方式来隔离环境。每个项目创建并激活自己的虚拟环境,无需集中管理:
# 项目 A
cd ~/projects/a
uv venv
uv pip install flask
# 项目 B
cd ~/projects/b
uv venv
uv pip install numpy
激活虚拟环境
source .venv/bin/activate # macOS/Linux
.venv\Scripts\activate # Windows
或者直接使用:
uv python
多 Python 版本管理
这是 uv
的杀手级功能之一:无需 pyenv 或 Conda,即可为每个项目使用不同的 Python 版本!
创建指定版本的虚拟环境
uv venv --python 3.11
如你未本地安装该版本,uv
会自动下载并缓存构建:
uv venv --python 3.9.18
查看本地缓存的 Python 版本
uv runtimes list
卸载某个版本以释放空间
uv runtimes uninstall 3.10.5
Python 缓存目录
macOS/Linux:
~/.cache/uv
Windows:
%LOCALAPPDATA%\uv
示例:快速搭建 Flask 项目
uv venv --python 3.11
uv pip install flask
echo "flask" > requirements.in
uv pip compile
uv pip sync
uv
与 Conda 的对比
功能 | uv |
conda |
---|---|---|
语言支持 | 仅 Python | Python + 多语言(R, C++, Java) |
包源 | PyPI | Conda 镜像 / Anaconda Cloud |
虚拟环境管理 | 基于 .venv |
使用 Conda 环境 |
安装速度 | 🚀 非常快(Rust 编写) | 🐢 较慢(特别是首次) |
系统级依赖 | ❌ 不支持 | ✅ 支持(如 MKL, BLAS) |
锁文件支持 | ✅ 是 | ❌ 原生不支持 |
安装第三方工具 | uv pip install black |
conda install black 或 pip |
适用场景 | 轻量开发,Web 项目,CI/CD | 数据科学,科研,多语言依赖 |
总结
如果你是: | 推荐工具 |
---|---|
Web/Python 项目开发者,追求速度和简单 | ✅ 使用 uv |
科学计算/数据分析/需要 C 库和跨语言依赖 | ✅ 使用 conda |
uv
的出现,让 Python 包管理回归简洁又强大,保留了 pip
的生态,却提供了 Conda 级别的体验。
参考链接
官方博客:Blog | Astral
Conda 文档:https://docs.conda.io
pipx 项目:https://github.com/pypa/pipx