uv
一个极其快速的 Python 包和项目管理器,用 Rust 编写。
使用热缓存安装 Trio 的依赖项。
亮点
- 🚀 一个工具替代
pip
,pip-tools
,pipx
,poetry
,pyenv
,twine
,virtualenv
等。 - ⚡️ 比
pip
快 10-100 倍。 - 🗂️ 提供 全面的项目管理,以及一个 通用锁文件。
- ❇️ 运行脚本,支持 内联依赖元数据。
- 🐍 安装和管理 Python 版本。
- 🛠️ 运行和安装 作为 Python 包发布的应用工具。
- 🔩 包括一个 pip 兼容的接口,通过熟悉的 CLI 提高性能。
- 🏢 支持 Cargo 风格的 工作区,用于可扩展的项目。
- 💾 节省磁盘空间,具有用于依赖项重复数据删除的 全局缓存。
- ⏬ 可以通过
curl
或pip
安装,无需 Rust 或 Python。 - 🖥️ 支持 macOS、Linux 和 Windows。
uv 由 Astral 提供支持,Astral 是 Ruff 的创建者。
安装
使用我们的官方独立安装程序安装 uv
然后,查看 入门步骤 或继续阅读以获取简要概述。
提示
uv 也可以通过 pip、Homebrew 等方式安装。 请在 安装页面 上查看所有方法。
项目
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.4
$ 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.ac.cn"))' > 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.4
Installed 1 executable: ruff
$ ruff --version
ruff 0.5.4
请参阅 工具指南 以开始使用。
Python 版本
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 CPython 3.12.0
Creating virtual environment at: .venv
Activate with: source .venv/bin/activate
$ uv run --python [email protected] -- python
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 版本
请参阅 安装 Python 指南 以开始使用。
pip 接口
uv 为常见的 pip
、pip-tools
和 virtualenv
命令提供了即插即用的替代方案。
uv 通过高级功能扩展了它们的接口,例如依赖项版本覆盖、平台无关的解析、可重现的解析、替代解析策略等等。
无需更改现有工作流程即可迁移到 uv,并通过 uv pip
接口体验 10-100 倍的加速。
将需求编译成平台无关的需求文件
$ uv pip compile docs/requirements.in \
--universal \
--output-file docs/requirements.txt
Resolved 43 packages in 12ms
创建一个虚拟环境
$ uv venv
Using CPython 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 接口文档 以开始使用。