强大的python包和项目管理工具-uv快速入门
一个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 | .gitignore |
- .gitignore: git的忽略配置文件
- .python-version: 指定了项目的python版本
- main.py: 保护一个简单的main函数,用于测试项目是否可以运行
- README.md : 生成一个简单的项目介绍的markdown文件
- pyproject.toml: 这个是uv管理项目的核心文件,通过它可以组织项目的依赖、定义运行的python版本等等。初始的结构如下
1 | name = "myuvproject" |
创建好项目后,要做的第一件事是同步项目依赖,执行下面的命令
1 | uv sync |
你会看到类似下面的输出
1 | Using CPython 3.13.5 interpreter at: C:\Python313\python.exe |
很明显,它帮我们创建python虚拟环境。那么接下来我们来做一些实验,理解uv是如何管理依赖的。
管理依赖
假设我们有一个项目需求,要访问某个网址来抓取网页。此时可能要用到requests这个依赖。在uv中新增一个依赖可以用下面的命令
1 | uv add requests |
其输出结果如下:
1 | Resolved 6 packages in 581ms |
可以看到它自动计算requests这个包的依赖并进行安装,而且速度比pip和conda都要快很多。
此时,我们再看project.toml文件就会发现dependences中增加了这个包的描述
1 | dependencies = [ |
在.venv的虚拟机目录下也正确的增加了依赖包
运行项目
现在我们在main.py中增加一段验证代码如下:
1 | import requests |
通过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: 发布项目到包索引