文章目录
-
-
- **主要功能**
-
- [1. **快速安装和管理 Python 包**](#1. 快速安装和管理 Python 包)
- [2. **生成和管理锁文件 (`requirements.lock`)**](#2. 生成和管理锁文件 (
requirements.lock
)) - [3. **创建虚拟环境**](#3. 创建虚拟环境)
- [4. **与 `poetry` 兼容**](#4. 与
poetry
兼容)
- **核心优势**
-
- [1. **极快的速度**:基于 Rust 实现,利用多线程和缓存大幅加速依赖解析。](#1. 极快的速度:基于 Rust 实现,利用多线程和缓存大幅加速依赖解析。)
- [2. **轻量且独立**:无需预装 Python 环境,直接作为静态二进制文件运行。](#2. 轻量且独立:无需预装 Python 环境,直接作为静态二进制文件运行。)
- [3. **全局缓存**:减少重复下载,所有项目共享全局包缓存。](#3. 全局缓存:减少重复下载,所有项目共享全局包缓存。)
- [4. **无缝兼容**:](#4. 无缝兼容:)
- **常见命令示例**
- **安装方法**
- **适用场景**
-
- [- 需要快速初始化 Python 环境(如 CI/CD 流程)。](#- 需要快速初始化 Python 环境(如 CI/CD 流程)。)
- [- 项目管理需要兼容传统 `pip` 和现代工具链。](#- 项目管理需要兼容传统
pip
和现代工具链。) - [- 依赖解析速度成为瓶颈时(特别是大型项目)。](#- 依赖解析速度成为瓶颈时(特别是大型项目)。)
- **注意事项**
-
uv
是一个由 Astral 团队(Ruff 和 Black 的开发者)推出的高性能 Python 包管理工具,旨在替代 pip
、pip-tools
和 virtualenv
等传统工具。它强调极速(比 pip
快 10-100 倍)、支持全局依赖缓存,并兼容 pip
和 pip-tools
的工作流。
主要功能
1. 快速安装和管理 Python 包
bash
uv pip install requests # 单包安装
uv pip install -r requirements.txt # 批量安装
2. 生成和管理锁文件 (requirements.lock
)
bash
uv pip compile requirements.in -o requirements.lock # 生成锁文件
uv pip sync requirements.lock # 根据锁文件同步环境
3. 创建虚拟环境
bash
uv venv .venv # 创建虚拟环境到 .venv 目录
source .venv/bin/activate # 激活虚拟环境
4. 与 poetry
兼容
支持 pyproject.toml
的依赖解析:
bash
uv pip install -e . # 以可编辑模式安装当前项目的依赖
核心优势
1. 极快的速度:基于 Rust 实现,利用多线程和缓存大幅加速依赖解析。
2. 轻量且独立:无需预装 Python 环境,直接作为静态二进制文件运行。
3. 全局缓存:减少重复下载,所有项目共享全局包缓存。
4. 无缝兼容:
- 支持传统
requirements.txt
和pip
命令。 - 可配合
poetry
、pdm
等现代工具工作。 - 生成与
pip-compile
兼容的锁文件。
常见命令示例
操作 | 命令 |
---|---|
安装包 | uv pip install numpy |
生成锁文件 | uv pip compile pyproject.toml -o requirements.lock |
同步依赖 | uv pip sync requirements.lock |
创建虚拟环境 | uv venv .venv |
显示帮助 | uv --help 或 uv pip --help |
安装方法
bash
# Linux/macOS
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows (PowerShell)
irm https://astral.sh/uv/install.ps1 | iex
适用场景
- 需要快速初始化 Python 环境(如 CI/CD 流程)。
- 项目管理需要兼容传统 pip
和现代工具链。
- 依赖解析速度成为瓶颈时(特别是大型项目)。
注意事项
- ⚠️
uv
仍处于早期开发阶段(截至 2024 年),部分高级功能可能受限。 - 建议开发者关注其兼容性和稳定性的持续提升。
官方文档:Astral UV
ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ
ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ