uv 是 Astral 团队用 Rust 开发的 Python 包管理工具,定位是替代 pip、pip-tools 和 virtualenv。它的核心卖点是快——比 pip 快 10 到 100 倍。如果你经常被 pip 安装速度折磨,或者管理多个 Python 项目的依赖感到头疼,uv 值得了解一下。
uv 是什么
uv 不只是另一个包管理器。Astral 团队的野心是做一个”Python 的 Cargo”——统一管理 Python 项目的依赖安装、虚拟环境、Python 版本和项目脚本。
uv 的主要能力包括:
- 包安装:替代 pip,支持 PyPI 上的所有包
- 虚拟环境:替代 venv/virtualenv,创建速度极快
- Python 版本管理:替代 pyenv,自动下载和管理多个 Python 版本
- 项目管理:替代 poetry/pipenv,管理项目依赖和脚本
- 工具运行:替代 pipx,直接运行 CLI 工具
安装方法
uv 的安装非常简单,一条命令搞定:
# Linux/macOS
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows (PowerShell)
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
# 如果你有 Python 环境,也可以用 pip 安装
pip install uv
安装完成后,运行 uv --version 确认安装成功。
日常使用场景
1. 管理 Python 版本
# 安装 Python 3.12
uv python install 3.12
# 查看已安装的 Python 版本
uv python list
# 指定项目使用的 Python 版本
uv python pin 3.12
uv 会自动下载并管理 Python 安装,不需要像 pyenv 那样手动编译。
2. 创建虚拟环境
# 创建虚拟环境
uv venv
# 创建指定 Python 版本的虚拟环境
uv venv --python 3.12
# 激活虚拟环境
source .venv/bin/activate # Linux/macOS
.venv\Scripts\activate # Windows
uv 创建虚拟环境的速度非常快,通常在 100 毫秒以内。
3. 安装包
# 安装单个包
uv pip install requests
# 从 requirements.txt 安装
uv pip install -r requirements.txt
# 安装开发依赖
uv pip install pytest black ruff
4. 项目管理
# 初始化新项目
uv init my-project
# 添加依赖
uv add requests flask
# 运行项目脚本
uv run python main.py
# 同步所有依赖
uv sync
uv 的项目管理功能类似 npm 或 Cargo,用 pyproject.toml 管理依赖,比 requirements.txt 更结构化。
5. 直接运行 CLI 工具
# 不用安装,直接运行
uvx ruff check .
uvx black --check .
uvx mypy src/
这个功能替代了 pipx,临时用一个工具时不用先安装再卸载。
uv vs pip 速度对比
实测数据(安装 Django 及其依赖):
- pip:约 15-25 秒(首次安装)
- uv:约 0.5-1.5 秒
差距主要来自 uv 的 Rust 实现和并行下载。对于大型项目(几十上百个依赖),差距更明显。
注意事项
- 兼容性:uv 支持绝大部分 PyPI 包,但一些使用复杂构建步骤的包可能有兼容问题
- 缓存:uv 会缓存已下载的包,首次安装后后续操作更快
- 团队协作:如果团队里有人还在用 pip,建议在项目文档里注明 uv 的使用方式
- CI/CD:GitHub Actions 和 GitLab CI 都有现成的 uv 集成方案
总结
uv 是目前 Python 生态里发展最快的包管理工具。如果你的日常工作涉及 Python 开发,从 pip 切换到 uv 能显著提升效率。特别是管理多个项目、频繁创建虚拟环境的场景,uv 的速度优势非常明显。
© 版权声明
THE END
















暂无评论内容