一个Rust编写的极速Python包和项目管理工具。

uv据说是一个工具替代 pip、pip-tools、pipx、poetry、pyenv、twine、virtualenv 等,而且比pip快10-100倍,支持对不同版本Python的安装和管理,今天就来安装实验一下。

安装

Windows 下用下面的脚本安装

1
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

Mac 和Linux用下面的脚本

1
curl -LsSf https://astral.sh/uv/install.sh | sh

脚本命令成功执行之后,还要根据提示将安装目录的bin放到系统的环境变量中,这样就可以在命令行中使用uv命令了。然后重启命令行工具就可以使用uv命令了。

几个常用的uv功能

如果你想了解它详细的使用功能,可以看在线的中文文档。https://uv.doczh.com/ 。这里说几个常用的uv功能。

项目管理

如果使用pip或者conda管理项目,通常是创建一个文件夹,然后在下面创建虚拟环境。但是在uv中,可以通过下面的命令创建一个项目

1
uv init myuvproject

执行上述命令后会在当前目录下生成一个名为myuvproject文件夹,这就是我们项目的根目录,其中包含下面几个文件:

1
2
3
4
5
.gitignore
.python-version
main.py
pyproject.toml
README.md
  • .gitignore: git的忽略配置文件
  • .python-version: 指定了项目的python版本
  • main.py: 保护一个简单的main函数,用于测试项目是否可以运行
  • README.md : 生成一个简单的项目介绍的markdown文件
  • pyproject.toml: 这个是uv管理项目的核心文件,通过它可以组织项目的依赖、定义运行的python版本等等。初始的结构如下
1
2
3
4
5
6
name = "myuvproject"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.13"
dependencies = []

创建好项目后,要做的第一件事是同步项目依赖,执行下面的命令

1
2
uv sync

你会看到类似下面的输出

1
2
3
4
Using CPython 3.13.5 interpreter at: C:\Python313\python.exe
Creating virtual environment at: .venv
Resolved 1 package in 8ms
Audited in 0.04ms

很明显,它帮我们创建python虚拟环境。那么接下来我们来做一些实验,理解uv是如何管理依赖的。

管理依赖

假设我们有一个项目需求,要访问某个网址来抓取网页。此时可能要用到requests这个依赖。在uv中新增一个依赖可以用下面的命令

1
uv add requests

其输出结果如下:

1
2
3
4
5
6
7
8
Resolved 6 packages in 581ms
Prepared 5 packages in 934ms
Installed 5 packages in 23ms
+ certifi==2025.8.3
+ charset-normalizer==3.4.3
+ idna==3.10
+ requests==2.32.5
+ urllib3==2.5.0

可以看到它自动计算requests这个包的依赖并进行安装,而且速度比pip和conda都要快很多。
此时,我们再看project.toml文件就会发现dependences中增加了这个包的描述

1
2
3
dependencies = [
"requests>=2.32.5",
]

在.venv的虚拟机目录下也正确的增加了依赖包
image.png

运行项目

现在我们在main.py中增加一段验证代码如下:

1
2
3
4
5
import requests
def main():
response = requests.get("https://www.baidu.com")
print(response.status_code)

通过uv命令运行

1
uv run main.py

结果显示如下

1
200

说明uv正确的加载了依赖并执行了代码。

如果我们拿到一个已有的python项目,可能其已经提供了一个requirements.txt来包含所需要的依赖,那么可以通过下面的命令导入这些依赖

1
uv add -r requirements.txt

一些常用的命令

下列一些常用的uv命令

  • uv init: 创建新 Python 项目
  • uv add: 为项目添加依赖
  • uv remove: 从项目移除依赖
  • uv sync: 同步项目依赖到环境
  • uv lock: 为项目依赖创建锁文件
  • uv run: 在项目环境中运行命令
  • uv tree: 查看项目依赖树
  • uv build: 构建项目为分发包
  • uv publish: 发布项目到包索引