mcpField
U
uv

uv

官方精选
docs.astral.sh开发者工具91.3kuv1 天前更新
代码仓库访问官网

关于 uv

uv 是一个 Python 包管理器、项目初始化工具和环境管理器。它通过 uv init 创建项目、uv add 安装依赖、uv run 执行脚本,提供跨平台的高效开发工作流。

主要功能

  1. 01初始化新的 Python 项目并配置依赖管理
  2. 02快速添加和更新项目依赖包
  3. 03在隔离环境中执行 Python 脚本和应用

适用场景

  1. 01编码 Agent 快速设置和管理项目环境
  2. 02开发者创建可复现的 Python 工作区
  3. 03CI/CD 流程中的依赖管理和脚本执行

安装

选择你的系统或包管理器,复制命令到终端运行。

$
brew install uv

安装完成后运行uv --version确认安装成功。

命令示例

常用命令按使用顺序排列。

01
uv init
02
uv add requests
03
uv run python main.py

详细介绍

uv

最新 PyPI 版本 支持的 Python 版本 Discord

一个使用 Rust 编写的极速 Python 软件包和项目管理器。

显示基准测试结果的柱状图。

使用预热缓存安装 Trio 的依赖项。

亮点

uv 由 Astral 提供支持,该公司也是 Ruff 和 ty 的创作者。

安装

使用我们的独立安装程序安装 uv:

# On macOS and Linux.
curl -LsSf https://astral.sh/uv/install.sh | sh
# On Windows.
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

也可以从 PyPI 安装:

# With pip.
pip install uv
# Or 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
Checked 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

请参阅工具文档以开始使用。

Python 版本

uv 可以安装 Python,并让你快速切换版本。

安装多个 Python 版本:

$ uv python install 3.12 3.13 3.14
Installed 3 versions in 972ms
 + cpython-3.12.12-macos-aarch64-none (python3.12)
 + cpython-3.13.9-macos-aarch64-none (python3.13)
 + cpython-3.14.0-macos-aarch64-none (python3.14)

按需下载 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 [email protected] -- 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 安装文档以开始使用。

pip 接口

uv 可直接替代常见的 pip、pip-tools 和 virtualenv 命令。

uv 还为这些接口扩展了高级功能,例如依赖项版本覆盖、跨平台解析、可复现的解析、替代解析策略等。

无需更改现有工作流即可迁移到 uv,并通过 uv pip 接口体验 10-100 倍的速度提升。

将 requirements 编译为与平台无关的 requirements 文件:

$ uv pip compile requirements.in \
   --universal \
   --output-file 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

安装已锁定的 requirements:

$ uv pip sync 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 如何发音?

发音为“you - vee”(/juː viː/)。

uv 应该如何书写?

请直接写作“uv”。详情请参阅风格指南。

uv 支持哪些平台?

请参阅 uv 的平台支持文档。

uv 是否已适用于生产环境?

是的,uv 已稳定,并广泛用于生产环境。详情请参阅 uv 的 版本管理策略文档。

致谢

uv 的依赖解析器在底层使用了 PubGrub。我们感谢 PubGrub 的维护者,尤其是 Jacob Finkelman,感谢他们的支持。

uv 的 Git 实现基于 Cargo。

uv 的一些优化借鉴了我们在 pnpm、Orogene 和 Bun 中看到的出色成果。我们也从 Nathaniel J. Smith 的 Posy 中学到了很多,并将其 trampoline 改造后用于支持 Windows。

许可证

uv 根据以下任一许可证授权:

由你选择。

除非你明确声明另有规定,否则你有意提交以纳入 uv 的任何贡献(如 Apache-2.0 许可证所定义)均按上述两种许可证双重授权,不附加任何条款或条件。

评论

支持 Markdown