一个用 Rust 编写的极其快速的 Python 包和项目管理器。
使用热缓存安装 Trio 的依赖项。
- 🚀 一个工具替代
pip、pip-tools、pipx、poetry、pyenv、twine、virtualenv等等。 - ⚡️ 比
pip快 10-100 倍。 - 🗂️ 提供全面的项目管理,配备通用锁文件。
- ❇️ 运行脚本,支持内联依赖元数据。
- 🐍 安装和管理 Python 版本。
- 🛠️ 运行和安装作为 Python 包发布的工具。
- 🔩 包含兼容 pip 的接口,在熟悉的 CLI 中提供性能提升。
- 🏢 支持 Cargo 风格的工作空间,适用于可扩展项目。
- 💾 磁盘空间高效,具有用于依赖去重的全局缓存。
- ⏬ 无需 Rust 或 Python 即可通过
curl或pip安装。 - 🖥️ 支持 macOS、Linux 和 Windows。
使用我们的独立安装程序安装 uv:
# 在 macOS 和 Linux 上。
curl -LsSf https://astral.sh/uv/install.sh | sh# 在 Windows 上。
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"或者,从 PyPI 安装:
# 使用 pip。
pip install uv# 或者 pipx。
pipx install uv如果通过独立安装程序安装,uv 可以将自己更新到最新版本:
uv self update有关详细信息和其他安装方法,请参阅安装文档。
uv 的文档可在 docs.astral.sh/uv 获取。
此外,可以使用 uv help 查看命令行参考文档。
uv 管理项目依赖和环境,支持锁文件、工作空间等,类似于 rye 或 poetry:
$ uv init example
Initialized project `example` at `/home/user/example`
$ cd example
$ uv add ruff
Creating virtual environment at: .venv
Resolved 2 packages in 170ms
Built example @ file:///home/user/example
Prepared 2 packages in 627ms
Installed 2 packages in 1ms
+ example==0.1.0 (from file:///home/user/example)
+ ruff==0.5.0
$ uv run ruff check
All checks passed!
$ uv lock
Resolved 2 packages in 0.33ms
$ uv sync
Resolved 2 packages in 0.70ms
Audited 1 package in 0.02ms请参阅项目文档开始使用。
uv 还支持构建和发布项目,即使它们不是用 uv 管理的。请参阅发布指南了解更多信息。
uv 管理单文件脚本的依赖和环境。
创建一个新脚本并添加声明其依赖的内联元数据:
$ echo 'import requests; print(requests.get("https://astral.sh"))' > example.py
$ uv add --script example.py requests
Updated `example.py`然后,在隔离的虚拟环境中运行脚本:
$ uv run example.py
Reading inline script metadata from: example.py
Installed 5 packages in 12ms
<Response [200]>请参阅脚本文档开始使用。
uv 执行和安装由 Python 包提供的命令行工具,类似于 pipx。
使用 uvx(uv tool run 的别名)在临时环境中运行工具:
$ uvx pycowsay 'hello world!'
Resolved 1 package in 167ms
Installed 1 package in 9ms
+ pycowsay==0.0.0.2
"""
------------
< hello world! >
------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||使用 uv tool install 安装工具:
$ uv tool install ruff
Resolved 1 package in 6ms
Installed 1 package in 2ms
+ ruff==0.5.0
Installed 1 executable: ruff
$ ruff --version
ruff 0.5.0请参阅工具文档开始使用。
uv 安装 Python 并允许快速切换版本。
安装多个 Python 版本:
$ uv python install 3.10 3.11 3.12
Searching for Python versions matching: Python 3.10
Searching for Python versions matching: Python 3.11
Searching for Python versions matching: Python 3.12
Installed 3 versions in 3.42s
+ cpython-3.10.14-macos-aarch64-none
+ cpython-3.11.9-macos-aarch64-none
+ cpython-3.12.4-macos-aarch64-none根据需要下载 Python 版本:
$ uv venv --python 3.12.0
Using Python 3.12.0
Creating virtual environment at: .venv
Activate with: source .venv/bin/activate
$ uv run --python pypy@3.8 -- python --version
Python 3.8.16 (a9dbdca6fc3286b0addd2240f11d97d8e8de187a, Dec 29 2022, 11:45:30)
[PyPy 7.3.11 with GCC Apple LLVM 13.1.6 (clang-1316.0.21.2.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>>在当前目录中使用特定的 Python 版本:
$ uv python pin 3.11
Pinned `.python-version` to `3.11`请参阅 Python 安装文档开始使用。
uv 为常见的 pip、pip-tools 和 virtualenv 命令提供直接替换。
uv 通过高级功能扩展了它们的接口,如依赖版本覆盖、平台无关解析、可重现解析、替代解析策略等。
迁移到 uv 而无需更改现有工作流程——并体验 10-100 倍的速度提升——使用 uv pip 接口。
将需求编译为平台无关的需求文件:
$ uv pip compile docs/requirements.in \
--universal \
--output-file docs/requirements.txt
Resolved 43 packages in 12ms创建虚拟环境:
$ uv venv
Using Python 3.12.3
Creating virtual environment at: .venv
Activate with: source .venv/bin/activate安装锁定的需求:
$ uv pip sync docs/requirements.txt
Resolved 43 packages in 11ms
Installed 43 packages in 208ms
+ babel==2.15.0
+ black==24.4.2
+ certifi==2024.7.4
...请参阅 pip 接口文档开始使用。
请参阅 uv 的平台支持文档。
请参阅 uv 的版本策略文档。
我们热衷于支持各个经验水平的贡献者,并希望看到您参与项目。请参阅贡献指南开始使用。
发音为 "you - vee"(/juː viː/)
请使用 "uv"。有关详细信息,请参阅样式指南。
uv 的依赖解析器在底层使用 PubGrub。我们感谢 PubGrub 维护者,特别是 Jacob Finkelman 的支持。
uv 的 Git 实现基于 Cargo。
uv 的一些优化受到我们在 pnpm、Orogene 和 Bun 中看到的出色工作的启发。我们还从 Nathaniel J. Smith 的 Posy 中学到了很多,并为 Windows 支持改编了其 trampoline。
uv 采用以下任一许可证:
- Apache License, Version 2.0, (LICENSE-APACHE 或 https://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT 或 https://opensource.org/licenses/MIT)
由您选择。
除非您明确声明,否则您有意提交给 uv 的任何贡献,如 Apache-2.0 许可证中定义的,应按上述方式双重许可,不附加任何额外条款或条件。