Skip to content

oaixnah/uv-doc-zh

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

uv

uv image image image Actions status Discord

一个用 Rust 编写的极其快速的 Python 包和项目管理器。

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

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

亮点

uv 由 Astral 支持,Ruff 的创造者。

安装

使用我们的独立安装程序安装 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 管理项目依赖和环境,支持锁文件、工作空间等,类似于 ryepoetry

$ 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

使用 uvxuv 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.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 安装文档开始使用。

pip 接口

uv 为常见的 pippip-toolsvirtualenv 命令提供直接替换。

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 的版本策略文档。

贡献

我们热衷于支持各个经验水平的贡献者,并希望看到您参与项目。请参阅贡献指南开始使用。

常见问题

如何发音 uv?

发音为 "you - vee"(/juː viː/

应该如何书写 uv?

请使用 "uv"。有关详细信息,请参阅样式指南

致谢

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

uv 的 Git 实现基于 Cargo

uv 的一些优化受到我们在 pnpmOrogeneBun 中看到的出色工作的启发。我们还从 Nathaniel J. Smith 的 Posy 中学到了很多,并为 Windows 支持改编了其 trampoline

许可证

uv 采用以下任一许可证:

由您选择。

除非您明确声明,否则您有意提交给 uv 的任何贡献,如 Apache-2.0 许可证中定义的,应按上述方式双重许可,不附加任何额外条款或条件。

Contributors