跳转到主要内容

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

项目描述

uv

uv image image image Actions status Discord

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

Shows a bar chart with benchmark results.

使用带缓存的安装方式安装Trio的依赖项。

亮点

  • 🚀 一个工具可以替代 pippip-toolspipxpoetrypyenvvirtualenv 等更多工具。
  • ⚡️ 比使用 pip 快10-100倍。
  • 🐍 安装和管理 Python版本。
  • 🛠️ 运行和安装 Python应用程序。
  • ❇️ 运行单文件脚本,支持 内联依赖元数据
  • 🗂️ 提供全面的项目管理,包括通用锁文件
  • 🔩 包含一个与pip兼容的接口,以实现熟悉的CLI性能提升。
  • 🏢 支持Cargo风格的工作区,适用于可扩展的项目。
  • 💾 磁盘空间高效,具有依赖项去重功能的全局缓存
  • ⏬ 无需Rust或Python,通过curlpip即可安装。
  • 🖥️ 支持 macOS、Linux 和 Windows。

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

安装

使用我们独立的安装程序或从PyPI安装uv。

# On macOS and Linux.
$ curl -LsSf https://astral.sh/uv/install.sh | sh

# On Windows.
$ powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

# With pip.
$ pip install uv

有关详细信息和其他安装方法,请参阅安装文档

文档

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.4

$ uv run ruff check
All checks passed!

有关开始使用的信息,请参阅项目文档

工具管理

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.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 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 pypy@3.11
Pinned `.python-version` to `pypy@3.11`

有关开始使用的信息,请参阅Python安装文档

脚本支持

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]>

有关开始使用的信息,请参阅脚本文档

与pip兼容的接口

uv提供了一种通用的pippip-toolsvirtualenv命令的替代方案。

uv通过添加高级功能扩展了它们的接口,例如依赖版本覆盖、平台无关的解析、可重复解析、替代解析策略等。

使用uv pip接口迁移到uv,无需改变现有的工作流程,并体验10-100倍的加速。

将需求编译成平台无关的需求文件

$ 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的依赖解析器底层使用了PubGrub。我们感谢PubGrub维护者,特别是Jacob Finkelman,他们的支持。

uv的Git实现基于Cargo

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

许可证

uv采用以下任一许可协议:

任您选择。

除非您明确表示,否则根据Apache-2.0许可协议定义,您有意提交以包含在uv中的任何贡献,都应双重许可如上所述,不附加任何额外条款或条件。

项目详情


发布历史 发布通知 | RSS订阅

下载文件

下载适用于您平台文件的文件。如果您不确定选择哪一个,请了解有关安装包的更多信息。

源分发

uv-0.4.18.tar.gz (2.0 MB 查看哈希值)

上传时间

构建分发

uv-0.4.18-py3-none-win_amd64.whl (13.9 MB 查看哈希值)

上传时间 Python 3 Windows x86-64

uv-0.4.18-py3-none-win32.whl (12.2 MB 查看哈希值)

上传时间 Python 3 Windows x86

uv-0.4.18-py3-none-musllinux_1_1_x86_64.whl (13.0 MB 查看哈希值)

上传时间 Python 3 musllinux: musl 1.1+ x86-64

uv-0.4.18-py3-none-musllinux_1_1_ppc64le.whl (14.2 MB 查看哈希值)

上传时间 Python 3 musllinux: musl 1.1+ ppc64le

uv-0.4.18-py3-none-musllinux_1_1_i686.whl (12.6 MB 查看哈希值)

上传时间 Python 3 musllinux: musl 1.1+ i686

uv-0.4.18-py3-none-musllinux_1_1_armv7l.whl (12.1 MB 查看哈希值)

上传时间 Python 3 musllinux: musl 1.1+ ARMv7l

uv-0.4.18-py3-none-manylinux_2_28_aarch64.whl (12.0 MB 查看哈希值)

上传时间 Python 3 manylinux: glibc 2.28+ ARM64

uv-0.4.18-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.9 MB 查看哈希值)

上传时间: Python 3 manylinux: glibc 2.17+ x86-64

uv-0.4.18-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl (17.1 MB 查看哈希值)

上传时间: Python 3 manylinux: glibc 2.17+ s390x

uv-0.4.18-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (13.1 MB 查看哈希值)

上传时间: Python 3 manylinux: glibc 2.17+ ppc64le

uv-0.4.18-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl (13.4 MB 查看哈希值)

上传时间: Python 3 manylinux: glibc 2.17+ ppc64

uv-0.4.18-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl (12.8 MB 查看哈希值)

上传时间: Python 3 manylinux: glibc 2.17+ i686

uv-0.4.18-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (12.1 MB 查看哈希值)

上传时间: Python 3 manylinux: glibc 2.17+ ARMv7l

uv-0.4.18-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl (11.8 MB 查看哈希值)

上传时间: Python 3 manylinux: glibc 2.17+ ARM64 musllinux: musl 1.1+ ARM64

uv-0.4.18-py3-none-macosx_11_0_arm64.whl (11.6 MB 查看哈希值)

上传时间: Python 3 macOS 11.0+ ARM64

uv-0.4.18-py3-none-macosx_10_12_x86_64.whl (12.5 MB 查看哈希值)

上传时间: Python 3 macOS 10.12+ x86-64

uv-0.4.18-py3-none-linux_armv6l.whl (12.3 MB 查看哈希值)

上传时间: Python 3