uv-最快的python包管理工具
概述
uv (https://github.com/astral-sh/uv) 是一个极快的Python包和项目管理工具,他是用Rust编写的。他可以用来代替 pip, pip-tools, pipx, poetry, pyenv, twine, virtualenv等工具。
他有如下的亮点:
- 极快的速度,比pip快10-100倍
- 提供pip兼容的接口形式,这样可以选择不学新的语法
- 提供python版本的管理,可以方便的切换下载python版本(这点比poetry好)
- 全局cache来管理依赖,这样可以避免重复下载
安装
可以使用系统原生的命令安装
# On macOS and Linux. |
也可以选择使用pip安装
# Using pip. |
使用下列命令可以进行版本升级
uv self update |
项目管理
项目初始化
使用init创建新项目,他会自动初始化好项目的目录结构
uv init example |
上边的命令会创建一个example目录,目录结构如下
. |
pyproject.toml文件是项目的配置文件,可以在这个文件中配置项目的依赖和其他信息, 内容如下(这个跟poetry的配置文件是类似的)
[project] |
依赖管理
使用add命令添加依赖
uv add requests |
使用remove命令移除依赖
uv remove requests |
更新依赖
uv lock --upgrade-package requests |
运行命令
可以使用run命令运行python文件
uv run main.py |
这样可以在不进入虚拟环境的情况下,运行python文件
此外,使用run命令可以指定python的版本
$ uv run --python [email protected] -- python --version |
更多的命令可以参考这个文档 https://docs.astral.sh/uv/guides/projects/
pip兼容管理接口
uv提供了pip兼容的接口,这样可以方便的使用pip的命令
uv pip install flask |
具体的命令可以参考这个文档 https://docs.astral.sh/uv/pip/packages/
python版本管理
安装python版本
使用python命令可以管理python版本,如下面命令可以安装多个python版本
$ uv python install 3.10 3.11 3.12 |
此外,在创建虚拟环境,或者使用run命令的时候,如果指定了不存在的python版本,也会自动对应的python版本
虚拟环境
创建虚拟环境
使用venv命令可以创建虚拟环境,可以指定python版本,默认配置下,他会自动下载缺少的python环境
$ uv venv --python 3.12.0 |
如果不指定python版本,他会使用当前目录的.python-version文件中的版本,如果没有这个文件,他会使用系统的python版本
激活虚拟环境
可以选择使用下列命令激活虚拟环境
$ source .venv/bin/activate |
如果是使用vscode,当重新打开或者reload项目的时候,vscode会自动激活虚拟环境
退出虚拟环境
使用下列命令可以退出虚拟环境
$ deactivate |
配置管理
镜像源配置
通过修改~/.config/uv/uv.toml文件,可以全局配置镜像源
[[index]] |
也可以手动修改pyproject.toml文件,实现项目级别的修改
[[tool.uv.index]] |
更多配置参考https://docs.astral.sh/uv/configuration/files/
总结
- uv是一个极快的Python包和项目管理工具,解析依赖快,下载也快
- 他相比较于poetry,提供了更友好的python版本管理功能(poetry需要依赖pyenv),更好的镜像地址设置功能
- 他提供了pip兼容的接口,这样可以方便的使用pip的命令
uv-最快的python包管理工具