如何使用 uv 管理 Python 包

uv 是一个用 Rust 编写的超快速 Python 包安装程序和解析器,由 Rye 和 Astral 团队开发。它旨在成为 pip 和 pip-tools 的直接替代品,但速度更快、功能更强大。

安装 uv

你可以通过以下几种方式安装 uv

1. 使用 pipx (推荐)

pipx 是用于安装和运行 Python 应用程序的工具。使用它可以将 uv 安装到一个独立的环境中,避免与其他包冲突。

pipx install uv

2. 使用 pip

pip install uv

uv 的基本使用

uv 的命令设计与 pip 非常相似,因此如果你熟悉 pip,上手会非常容易。

创建虚拟环境

使用 uv venv 可以快速创建虚拟环境。

# 创建名为 my-project-env 的虚拟环境
uv venv my-project-env

# 激活虚拟环境 (macOS/Linux)
source my-project-env/bin/activate

# 激活虚拟环境 (Windows)
my-project-env\Scripts\activate

安装包

使用 uv pip install 来安装包。

# 安装单个包
uv pip install requests

# 安装多个包
uv pip install pandas numpy

# 安装特定版本的包
uv pip install "requests==2.28.1"

requirements.txt 文件安装

uv 可以直接从 requirements.txt 文件安装依赖。

# 假设你有一个 requirements.txt 文件
# requests>=2.28.1
# beautifulsoup4==4.11.1

uv pip install -r requirements.txt

升级包

使用 uv pip install --upgrade 来升级包。

# 升级 requests
uv pip install --upgrade requests

卸载包

使用 uv pip uninstall 来卸载包。

uv pip uninstall requests

列出已安装的包

使用 uv pip list 来查看当前环境中安装的所有包。

uv pip list

uv 的高级使用

锁定依赖 (Locking)

uv 提供了强大的依赖锁定功能,类似于 pip-tools。这可以确保你的项目在任何地方都使用完全相同的依赖版本。

首先,创建一个 requirements.in 文件,列出你的顶级依赖。例如:

# requirements.in
requests
beautifulsoup4

然后,使用 uv pip compile 生成一个锁定文件 requirements.txt

# 生成锁文件
uv pip compile requirements.in -o requirements.txt

# 生成的 requirements.txt 文件可能看起来像这样:
# requests==2.28.1
# beautifulsoup4==4.11.1
# ... 及其所有子依赖

最后,使用这个锁定文件来安装包,以确保所有人都使用完全相同的版本:

# 从锁文件安装
uv pip install -r requirements.txt

检查依赖一致性 (Sync)

uv 也可以检查并同步当前环境中的包,使其与 requirements.txt 文件完全一致。

# 确保环境中的包与 requirements.txt 文件一致
uv pip sync requirements.txt

这个命令会安装 requirements.txt 中缺失的包,并卸载文件中没有的包,从而保持环境的整洁。