uv 工具全方位介绍
起源与背景
uv 是由 Astral(pipx 作者)团队用 Rust 语言开发的新一代 Python 包和环境管理工具。其目标是解决传统 pip/venv/conda 在依赖解析慢、环境隔离繁琐、命令复杂等方面的痛点,为现代 Python 项目提供极速、自动化、一体化的依赖和环境管理体验。
主要特点
- 极致性能 :uv 采用 Rust 实现,依赖解析和包安装速度比 pip 快 10-100 倍(详见官方基准测试)。
- 为什么快?Rust 实现的高效算法、并发下载、优化的依赖解析流程,使 uv 能极大提升解析和安装效率。
- 一站式工具集成:uv 可替代 pip、pip-tools、pipx、poetry、pyenv、twine、virtualenv 等,统一管理依赖、环境、脚本、Python 版本和工具。
- 全局缓存与依赖去重:通过全局缓存和依赖去重机制,显著节省磁盘空间,多项目共享依赖无需重复安装。
- 自动环境与项目管理 :每个项目自动创建
.venv
,支持 universal lockfile,支持大型项目工作区(workspaces)。 - 支持 Python 版本管理:可安装和切换多版本 Python。
- 脚本运行与工具管理:支持带内依赖元数据的脚本运行,支持直接安装和运行 Python 工具包。
- pip 兼容命令行:完全兼容 pip 常用命令,迁移无门槛。
- 跨平台,安装便捷:支持 macOS、Linux、Windows,无需预装 Rust/Python,可用 curl、pip、pipx 安装。
安装方法
macOS 和 Linux
sh
curl -LsSf https://astral.sh/uv/install.sh | sh
Windows
powershell
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
通过 pip 安装(需已安装 Python)
sh
pip install uv
通过 pipx 安装
sh
pipx install uv
更多安装方式和细节请参考 uv 官方安装文档
常见用法
1. 安装依赖
sh
uv pip install requests
uv pip install -r requirements.txt
2. 运行 Python 脚本
sh
uv run main.py
uv run --python "C:/path/to/python.exe" main.py
3. 查看/管理依赖
sh
uv pip list
uv pip freeze > requirements.txt
uv pip uninstall numpy
4. 自动创建虚拟环境
- 只需在项目目录下运行任何 uv 命令,uv 会自动检测并创建
.venv
环境。
如果要制定python 版本, 可以在工程根目录下放一个.python-version
文件, 或者通过命令行指定python 版本。 否则uv会自动选择一个版本下载。
5. 解析 pyproject.toml
- uv 会自动识别并安装
pyproject.toml
、requirements.txt
、setup.py
中声明的依赖。
常用命令速查表
命令 | 说明 |
---|---|
uv pip install 包名 | 安装依赖包 |
uv pip uninstall 包名 | 卸载依赖包 |
uv pip list | 查看已安装包 |
uv pip freeze | 导出依赖列表 |
uv run xxx.py | 在隔离环境中运行脚本 |
uv run --python 路径 xxx.py | 用指定 Python 运行脚本 |
uv pip install -r requirements.txt | 按依赖文件安装所有依赖 |
uv 相比 pip 的主要优势
对比项 | pip(传统工具) | uv(新一代工具) |
---|---|---|
依赖解析与安装速度 | 较慢,解析和安装大项目依赖时耗时明显 | 极快,Rust 实现,依赖解析和包安装速度大幅领先 |
虚拟环境管理 | 需手动用 venv/virtualenv 创建与激活 | 自动为每个项目创建和管理 .venv ,无需手动激活 |
自动识别依赖文件 | 仅支持 requirements.txt,pyproject.toml 支持有限 | 自动识别 pyproject.toml、requirements.txt、setup.py 等多种格式 |
一键运行脚本 | 需手动激活环境再运行脚本 | uv run xxx.py 自动在隔离环境中运行脚本 |
命令兼容性 | pip 命令标准 | 兼容 pip 子命令,且功能更丰富 |
安装体验 | 依赖冲突、环境不一致可能导致出错 | 自动隔离、自动同步依赖,极大减少环境冲突 |
包缓存 | 支持缓存,但多环境间仍需重复安装 | 高效缓存,自动重用已下载包,提升多项目间安装速度 |
跨平台支持 | 良好 | 同样良好 |
总结
- uv 在依赖解析速度、自动环境管理、依赖文件识别和一键运行脚本等方面全面领先 pip。
- uv 适合追求开发效率、环境隔离和现代项目自动化管理的用户。
- pip 仍是最广泛兼容的传统工具,适合简单项目或对兼容性有极高要求的场景。
适用场景
- 现代 Python 项目开发、测试、部署
- 需要快速、自动化的依赖和环境管理
- 追求极致开发体验和环境隔离的开发者