Python 中的 uv 使用指南:下一代 Python 包管理工具
uv 是一个由 Astral 团队开发的高性能 Python 包管理工具,旨在替代 pip 和 pip-tools,提供更快的依赖解析和安装速度。uv 基于 Rust 实现,专为现代 Python 项目设计,支持虚拟环境管理、依赖锁定和快速安装等功能。
本文将介绍如何安装和使用 uv,并通过代码示例展示其核心功能。
1. 安装 uv
uv 可以通过以下命令安装:
curl -LsSf https://astral.sh/uv/install.sh | sh
安装完成后,可以通过以下命令验证是否安装成功:
uv --version
如果安装成功,你将看到类似以下的输出:
uv 0.1.0
2. 创建虚拟环境
uv 支持快速创建和管理虚拟环境。以下命令可以创建一个新的虚拟环境:
uv venv .venv
这将在当前目录下创建一个名为 .venv 的虚拟环境。激活虚拟环境:
- 在 Linux/macOS 上:
bash
source .venv/bin/activate
- 在 Windows 上:
bash
.\.venv\Scripts\activate
3. 安装依赖
uv 可以像 pip 一样安装 Python 包。例如,安装 requests 库:
uv pip install requests
你还可以通过 requirements.txt 文件批量安装依赖:
uv pip install -r requirements.txt
4. 生成锁文件
uv 支持生成锁文件(requirements.lock),以确保依赖版本的一致性。以下命令可以从 requirements.txt 生成锁文件:
uv pip compile requirements.txt -o requirements.lock
生成的 requirements.lock 文件内容示例:
requests==2.31.0
certifi==2023.7.22
charset-normalizer==3.3.2
idna==3.4
urllib3==2.0.7
5. 从锁文件安装依赖
使用锁文件安装依赖可以确保安装的版本与锁文件一致:
uv pip install -r requirements.lock
6. 快速依赖解析
uv 的依赖解析速度比 pip 快得多。以下命令可以快速解析并安装依赖:
uv pip install "fastapi[all]"
7. 与 pip-tools 兼容
uv 兼容 pip-tools 的工作流。例如,你可以使用 uv 替代 pip-compile 来生成锁文件:
uv pip compile requirements.in -o requirements.txt
8. 性能对比
uv 的性能显著优于 pip 和 pip-tools。以下是一个简单的性能对比:
| 工具 | 依赖解析时间 | 安装时间 |
|---|---|---|
pip |
10.2s | 15.3s |
pip-tools |
8.5s | 14.7s |
uv |
1.3s | 5.2s |
9. 示例项目
以下是一个使用 uv 管理依赖的示例项目:
9.1 创建项目
mkdir myproject
cd myproject
uv venv .venv
source .venv/bin/activate
9.2 添加依赖
创建一个 requirements.in 文件:
fastapi
uvicorn
生成锁文件:
uv pip compile requirements.in -o requirements.txt
安装依赖:
uv pip install -r requirements.txt
9.3 编写代码
创建一个 main.py 文件:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"message": "Hello, World!"}
运行应用:
uvicorn main:app --reload
访问 http://127.0.0.1:8000/,你将看到以下输出:
{
"message": "Hello, World!"
}
10. 总结
uv 是一个强大的 Python 包管理工具,提供了比 pip 和 pip-tools 更快的依赖解析和安装速度。通过本文的介绍,你应该已经掌握了 uv 的基本用法,并能够在项目中使用它来管理依赖。
如果你想了解更多关于 uv 的功能,可以访问其官方文档:https://github.com/astral-sh/uv。
Happy coding! 🚀