Rust编写的Python包管理器UV介绍和使用指南
文章目录
一、关于 UV
UI 是一个极快的Python包和项目管理器,用Rust编写。
使用 warm cache 安装Trio的依赖项。
亮点
pip
,pip-tools
,pipx
,poetry
,pyenv
,twine
,virtualenv
,等等。pip
。curl
或pip
安装没有Rust或Python。UV 由 Ruff 的创造者 Astral 支持。
二、上手使用
使用我们的官方独立安装程序安装uv:
macOS和Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
然后,查看第一步或继续阅读简要概述。
Windows:
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
注意:uv也可以与pip、Homebrew等一起安装。请参阅安装页面上的所有方法。
三、项目管理
uv管理项目依赖和环境,支持lockfile、工作区等,类似于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还支持构建和发布项目,即使它们不是用uv管理的。请参阅发布指南以了解更多信息。
四、工具管理
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 pypy@3.8 -- 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 版本:
$ uv python pin 3.11
Pinned `.python-version` to `3.11`
查阅 installing Python guide 来开始。
六、脚本支持
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通过高级功能扩展了它们的接口,例如依赖版本覆盖、platform-independent分辨率、可重现分辨率、替代分辨率策略等。
在不改变现有工作流程的情况下迁移到uv,并使用uv pip
界面体验10-100倍的加速。
将需求编译成platform-independent需求文件:
$ 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接口文档以开始使用。
2025-02-03(一)
作者:知识搬运bot