UV-易用而快速的Python 包管理工具
type
status
date
slug
summary
tags
category
icon
password
uv 是一款基于 Rust 开发的 Python 包管理工具。
在尝试了 PDM 与 Poetry 这些复杂且不太友好的包管理工具后,终于迎来了一个类似 Cargo 的 Python 包管理工具。它文档清晰,风格与 Cargo 相似,能与 pip、pip-tools 无缝兼容。初次使用后感觉非常棒,目前在 GitHub 上已获得 19K 星标。
特性
- 基于 Rust 开发,比 pip快 10-100X,如果是之前看过我的 Ruff 使用之旅,从 Black切换到 Ruff 的同学应该深有体会,顺便一说,Ruff 也是他们团队开发的,利用 Rust 重构 Python 的生态链,看来是一个极其有价值的事情,Rust-Python截止到 24 年9 月,star 也干到 18K star,刚开始的时候 star 才 3k 不到
- 自带 Python 环境管理功能,类似 venv
- 提供类似 PDM,Poetry 的包版本管理和锁定功能
- 提供脚本单独配置运行的包版本,方便多版本使用
- 提供 cargo 风格的 workspace ,支持大型项目协同管理
- 支持 MacOS、Linux、Windows
安装
uv支持curl 或者pip 的方式安装,参照官网文档
安装完毕之后可以用
uv help
查看相关指令使用
uv 使用一般有两种场景,从已有项目迁移和创建新项目。
新建新项目
cd到项目根目录下,
uv init
会发现多了venv 、 pyproject.toml 和 uv.lock ,venv是项目的 python 虚拟环境,toml 是项目配置信息和依赖,uv.lock是用于版本控制的依赖文件。
从已有项目迁移
如果是从 potery、PDM管理的项目迁移过来的,利用其他工具翻译 toml 文件就行,如果是用 requirements管理的话,不推荐直接从文件添加,最好理清依赖关系再添加。
多人协作
从 git 上拉取已经用 uv 配置好的项目后,
uv venv
创建虚拟环境,uv sync
安装依赖到本地。当有新依赖发生修改时,
uv lock
锁定依赖版本。依赖管理
uv 的管理概念十分直观,
uv add pkg
添加依赖,uv 会自动处理子依赖,uv remove pkg
移出依赖,添加的时候可以指定版本下面截图就是我执行了
uv add utilmeta pymysql
之后的结构安装并使用 python 包工具
有的人可能不太理解这一节内容是干嘛的,我举个例子,当你使用 ruff 格式化工具和 pre-commit钩子的时候,一般情况下是依赖某个 python 环境下安装的,而这个环境又可能与某个 project 绑定,当你切换到新项目工作时,难道还得重复安装一遍 ruff 或包含全路径的 ruff命令去执行?为了简单起见,可以使用
uv tool
相关命令。安装 ruff
uv tool install ruff
使用 ruff,
uvx
等价于 uv tool run
uvx ruff check
查看包安装路径
uv tool dir