一个极其快速的Python包和项目管理器,使用Rust编写。
项目描述
uv
一个极其快速的Python包和项目管理器,使用Rust编写。
使用带缓存的安装方式安装Trio的依赖项。
亮点
- 🚀 一个工具可以替代
pip
、pip-tools
、pipx
、poetry
、pyenv
、virtualenv
等更多工具。 - ⚡️ 比使用
pip
快10-100倍。 - 🐍 安装和管理 Python版本。
- 🛠️ 运行和安装 Python应用程序。
- ❇️ 运行单文件脚本,支持 内联依赖元数据。
- 🗂️ 提供全面的项目管理,包括通用锁文件。
- 🔩 包含一个与pip兼容的接口,以实现熟悉的CLI性能提升。
- 🏢 支持Cargo风格的工作区,适用于可扩展的项目。
- 💾 磁盘空间高效,具有依赖项去重功能的全局缓存。
- ⏬ 无需Rust或Python,通过
curl
或pip
即可安装。 - 🖥️ 支持 macOS、Linux 和 Windows。
安装
使用我们独立的安装程序或从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管理项目依赖和环境,支持锁文件、工作区等功能,类似于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执行并安装由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 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提供了一种通用的pip
、pip-tools
和virtualenv
命令的替代方案。
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的一些优化受到了我们在pnpm、Orogene和Bun中看到的一些优秀工作的启发。我们还从Nathaniel J. Smith的Posy中学习了很多,并为Windows支持适配了其trampoline。
许可证
uv采用以下任一许可协议:
- Apache License, Version 2.0, (LICENSE-APACHE或https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可协议 (LICENSE-MIT或https://open-source.org.cn/licenses/MIT)
任您选择。
除非您明确表示,否则根据Apache-2.0许可协议定义,您有意提交以包含在uv中的任何贡献,都应双重许可如上所述,不附加任何额外条款或条件。
项目详情
下载文件
下载适用于您平台文件的文件。如果您不确定选择哪一个,请了解有关安装包的更多信息。
源分发
构建分发
哈希值 用于 uv-0.4.18-py3-none-manylinux_2_28_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4be600474db6733078503012f2811c4383f490f77366e66b5f686316db52c870 |
|
MD5 | 3107f902cc59ff9f3084c8d0a8d0d0c7 |
|
BLAKE2b-256 | ca291f451ef9b2138fdc777e24654da24fa60e42435936d29bcba0fb5bae3c44 |
哈希值 用于 uv-0.4.18-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b08564c8c7e8b3665ad1d6c8924d4654451f96c956eb5f3b8ec995c77734163d |
|
MD5 | a6ef145037fbe1dbf59501656981ca11 |
|
BLAKE2b-256 | 4e8977ad3d48f2ea11fd4e416b8cc1be18b26f189a4f0bf7918ac6fdb4255fa6 |
哈希值 用于 uv-0.4.18-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | df225a568da01f3d7e126d886c3694c5a4a7d8b85162a4d6e97822716ca0e7c4 |
|
MD5 | 69410d60d592c22f42c60c18556e49fe |
|
BLAKE2b-256 | f7f5f21bec94affe10e677ecbc0cc1b89d766c950dbc8e23df87451c71848c3f |
哈希值 用于 uv-0.4.18-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 96c3ccee0fd8cf0a9d679407e157b76db1a854638a4ba4fa14f4d116b4e39b03 |
|
MD5 | 36625edfcbb9cd5636762605251f753e |
|
BLAKE2b-256 | e950eace0e9326318bf278491aafc3d63e8675a3d03472d2bc58ef601564cbb4 |
哈希值 用于 uv-0.4.18-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | fcc606da545d9a5ec5c2209e7eb2a4eb76627ad75df5eb5616c0b40789fe3933 |
|
MD5 | b9313ca9a744d11037c0ceeae8985187 |
|
BLAKE2b-256 | a654623029d342f68518c25ed8a3863bc43ced0ad39da4dc83b310db3fe0a727 |
哈希值 用于 uv-0.4.18-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1b59d742b81c7acf75a3aac71d9b24e07407e044bebcf39d3fc3c87094014e20 |
|
MD5 | d76e4b42bc0ebf078a287134ae61f261 |
|
BLAKE2b-256 | a1feafd83b6ed495fe40a4a738cce0de77465af452f8bd58b254a6cf7544a581 |
哈希值 用于 uv-0.4.18-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f043c3c4514c149a00a86c3bf44df43062416d41002114e60df33895e8511c41 |
|
MD5 | 886f9e95ccda59598a43cf966f589e75 |
|
BLAKE2b-256 | e5880b20af8d76e7b8e6ae19af6d14180a0a9e3c23ef6f3cd38370a2ba663364 |
哈希值 用于 uv-0.4.18-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8af0b60adcfa2e87c77a3008d3ed6e0b577c0535468dc58e06f905ccbd27124f |
|
MD5 | 7770980a3201c30a092d72376cdaf8f5 |
|
BLAKE2b-256 | bb7f49a724b0c8e09fca03c166e7f18ad48c8962c9be543899a27eecc13b8b86 |