本文档全面概述了uv,一个用Rust编写的极快的Python包和项目管理器。uv是一个统一的工具,用于取代pip、pip-tools、pipx、poetry、pyenv、virtualenv等多个Python生态系统工具。
有关安装uv的信息,请参阅安装页面。有关项目管理等特定功能,请参阅项目管理。
uv旨在为Python项目提供高性能的包解析、安装和管理功能。它提供:
所有这些功能都以速度(比pip快10-100倍)和开发者体验为重点。
来源: crates/uv/Cargo.toml17-60 README.md10-45
来源: docs/configuration/files.md docs/reference/settings.md
uv-cli)命令行界面是用户的主要入口点,解析命令和参数,并将其分派给相应的处理程序。
uv 为不同的功能提供了几个子命令:
uv pip:pip 命令的直接替换uv run:在项目环境中运行 Python 脚本或命令uv tool(别名为 uvx):运行或安装 Python 工具uv python:管理 Python 版本uv venv:创建和管理虚拟环境init, add, remove, lock, sync来源: README.md40-45 docs/index.md82-159
uv-resolver)解析器负责确定满足依赖关系所需的包集。它使用 PubGrub 算法(来自 Dart 的包管理器 Pub)来解析依赖关系图。
主要功能包括
来源: README.md289-291 docs/concepts/resolution.md
来源: docs/concepts/cache.md README.md41
uv-workspace)uv 中的项目管理围绕 pyproject.toml 文件和 uv.lock 锁文件展开。工作区组件管理:
项目管理遵循声明式模型:
pyproject.toml 中定义uv.lock 中来源: docs/concepts/projects/index.md docs/concepts/projects/layout.md README.md29-39
uv-python)Python 管理子系统处理:
uv 可以根据需要自动下载和安装 Python 版本,支持 3.12 或 pypy@3.10 等特定版本请求。
来源: docs/guides/install-python.md README.md162-196
uv-tool)工具管理子系统提供:
uvx 或 uv tool run)uv tool install)工具在隔离的环境中运行,以防止依赖冲突。
来源: docs/concepts/tools.md docs/guides/tools.md README.md122-157
uv 采用了多种技术来实现其性能优势:
| 优化 | 描述 |
|---|---|
| 批量预取 | 并行检索元数据以加速依赖解析 |
| 全局缓存 | 在项目之间共享下载的包和元数据 |
| 高效解析器 | 使用 PubGrub 算法进行更快的依赖解析 |
| Rust 实现 | 提供内存安全和性能优势 |
| 并行操作 | 并发下载和安装包 |
来源: README.md28 docs/reference/benchmarks.md
uv 提供了一个通用锁文件,它:
来源:README.md30 docs/concepts/projects/layout.md
uv 支持 Cargo 风格的工作区,用于管理多项目仓库
pyproject.toml 文件中定义工作区成员来源:README.md38 docs/concepts/projects/workspaces.md
uv 提供了一个全面的 Python 包和项目管理解决方案,专注于速度、可重复性和开发者体验。其架构围绕模块化和性能设计,包含用于 CLI 交互、依赖项解析、分发管理、项目管理和 Python 版本管理的独立组件。
通过利用 Rust 进行实现并采用批量预取和高效缓存等优化,uv 在性能上比传统工具提高了 10-100 倍,同时保持了与 Python 生态系统的兼容性。