Files

425 lines
8.1 KiB
Markdown
Raw Permalink Normal View History

2026-05-10 10:56:52 +08:00
# uv 使用文档
> uv 是一个用 Rust 编写的极速 Python 包管理与工具链管理器,由 Astral 公司(Ruff 作者)开发。
> 它可替代 pip、pip-tools、pipx、poetry、pyenv、virtualenv 等多个工具。
---
## 目录
1. [简介](#1-简介)
2. [安装与配置](#2-安装与配置)
3. [核心命令速查](#3-核心命令速查)
4. [Python 版本管理](#4-python-版本管理)
5. [虚拟环境管理](#5-虚拟环境管理)
6. [包管理](#6-包管理)
7. [项目工作流](#7-项目工作流)
8. [镜像源配置](#8-镜像源配置)
9. [常见问题](#9-常见问题)
---
## 1. 简介
### 1.1 什么是 uv?
uv 是一个"大一统"的 Python 工具链,具备以下核心能力:
| 功能 | 对应传统工具 |
|------|------------|
| Python 版本安装与管理 | pyenv |
| 虚拟环境创建 | venv / virtualenv |
| 包安装 | pip |
| 依赖锁定 | pip-tools / poetry |
| 工具包运行 | pipx |
| 脚本依赖管理 | 原生支持 |
### 1.2 核心优势
- **极快速度**:比 pip 快 10-100 倍
- **单一二进制**:无需 Python 即可安装 uv
- **兼容性强**:兼容 pip 的工作流和 requirements.txt
- **全面替代**:一个工具解决 Python 环境所有问题
---
## 2. 安装与配置
### 2.1 一键安装(推荐)
```bash
curl -LsSf https://astral.sh/uv/install.sh | sh
```
安装后重启终端或执行:
```bash
source $HOME/.local/bin/env
```
### 2.2 其他安装方式
**macOS (Homebrew):**
```bash
brew install uv
```
**Linux (apt/手动):**
```bash
# 下载二进制
curl -LsSf https://astral.sh/uv/install.sh | sh
```
**Windows (PowerShell):**
```powershell
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
```
### 2.3 验证安装
```bash
uv --version
# 输出示例: uv 0.11.11 (x86_64-unknown-linux-gnu)
```
### 2.4 配置国内镜像源(加速)
创建配置文件 `~/.config/uv/uv.toml`:
```toml
# Python 版本下载镜像源
python-install-mirror = "https://registry.npmmirror.com/-/binary/python-build-standalone/"
# pip 包下载镜像源(阿里云)
[[index]]
url = "https://mirrors.aliyun.com/pypi/simple/"
default = true
```
也可通过环境变量临时设置:
```bash
export UV_PYTHON_INSTALL_MIRROR="https://registry.npmmirror.com/-/binary/python-build-standalone/"
```
---
## 3. 核心命令速查
| 命令 | 说明 |
|------|------|
| `uv python install <版本>` | 安装指定 Python 版本 |
| `uv python list` | 列出可用的 Python 版本 |
| `uv venv` | 创建虚拟环境 |
| `uv pip install <包>` | 安装 Python 包 |
| `uv pip sync requirements.txt` | 同步依赖 |
| `uv run <文件>` | 在虚拟环境中运行脚本 |
| `uv add <包>` | 向项目添加依赖 |
| `uv lock` | 生成锁定文件 |
| `uv tool run <工具>` | 运行工具包(类似 pipx) |
| `uv init` | 初始化新项目 |
| `uv build` | 构建分发包 |
---
## 4. Python 版本管理
### 4.1 查看可安装的 Python 版本
```bash
# 列出所有可下载的版本
uv python list --only-downloads
# 列出已安装的版本
uv python list
```
### 4.2 安装指定 Python 版本
```bash
# 安装最新 Python 3.12
uv python install 3.12
# 安装具体版本
uv python install 3.11.11
# 安装多个版本
uv python install 3.10 3.11 3.12
```
### 4.3 查看与切换当前 Python
```bash
# 查看当前使用的 Python
uv python
# 查找特定版本的路径
uv python find 3.11
# 为项目固定 Python 版本
uv python pin 3.12
```
### 4.4 卸载 Python 版本
```bash
# uv 安装的 Python 存储在 ~/.local/share/uv/python/
# 直接删除对应目录即可
rm -rf ~/.local/share/uv/python/cpython-3.10*
```
---
## 5. 虚拟环境管理
### 5.1 创建虚拟环境
```bash
# 在当前目录创建 .venv(使用默认 Python)
uv venv
# 指定 Python 版本创建
uv venv --python 3.12
# 指定名称
uv venv myenv
```
### 5.2 激活虚拟环境
```bash
# Linux / macOS
source .venv/bin/activate
# Windows
.venv\Scripts\activate
```
> **提示**:uv 会自动检测并使用当前目录下的 `.venv`,无需手动激活也可通过 `uv run` 使用。
### 5.3 删除虚拟环境
```bash
# 直接删除 .venv 目录即可
rm -rf .venv
```
---
## 6. 包管理
uv 兼容 pip 的全部功能,且速度更快。
### 6.1 安装包
```bash
# 安装单个包
uv pip install requests
# 安装指定版本
uv pip install "flask>=2.0"
# 从 requirements.txt 安装
uv pip install -r requirements.txt
# 从 pyproject.toml 安装
uv pip install -e .
```
### 6.2 管理已安装的包
```bash
# 列出已安装的包
uv pip list
# 查看包信息
uv pip show requests
# 检查依赖冲突
uv pip check
# 卸载包
uv pip uninstall requests
```
### 6.3 依赖锁定
```bash
# 根据 requirements.in 编译出锁定文件
uv pip compile requirements.in -o requirements.txt
# 同步环境到锁定状态
uv pip sync requirements.txt
```
---
## 7. 项目工作流
### 7.1 初始化新项目
```bash
# 创建新项目
uv init my_project
cd my_project
# 添加依赖
uv add requests flask
# 安装所有依赖
uv sync
# 运行项目
uv run python main.py
```
### 7.2 脚本依赖管理(Shebang 方式)
在 Python 脚本顶部添加内联元数据,自动管理依赖:
```python
# /// script
# dependencies = [
# "requests>=2.28",
# "rich>=13.0",
# ]
# ///
import requests
from rich import print
response = requests.get("https://api.github.com")
print(response.status_code)
```
运行方式:
```bash
uv run script.py
```
> uv 会自动创建隔离环境并安装依赖,无需手动管理!
### 7.3 工具包管理(替代 pipx)
```bash
# 安装工具包
uv tool install ruff
# 运行工具(无需安装)
uv tool run black --help
# 列出已安装的工具
uv tool list
# 升级工具
uv tool upgrade ruff
# 卸载工具
uv tool uninstall ruff
```
---
## 8. 镜像源配置
### 8.1 配置文件方式
编辑 `~/.config/uv/uv.toml`:
```toml
# ========== Python 版本下载镜像 ==========
python-install-mirror = "https://registry.npmmirror.com/-/binary/python-build-standalone/"
# ========== 包下载镜像源 ==========
[[index]]
url = "https://mirrors.aliyun.com/pypi/simple/"
default = true
# 可配置多个备用镜像源
[[index]]
url = "https://pypi.tuna.tsinghua.edu.cn/simple/"
```
### 8.2 环境变量方式
```bash
# Python 版本下载镜像
export UV_PYTHON_INSTALL_MIRROR="https://registry.npmmirror.com/-/binary/python-build-standalone/"
# 包下载镜像(临时覆盖)
export UV_INDEX_URL="https://mirrors.aliyun.com/pypi/simple/"
```
### 8.3 常用国内镜像源
| 镜像源 | Python 版本镜像 URL | PyPI 镜像 URL |
|--------|-------------------|--------------|
| 华为云 | `https://repo.huaweicloud.com/python` | `https://mirrors.huaweicloud.com/repository/pypi/simple` |
| 阿里云 | - | `https://mirrors.aliyun.com/pypi/simple/` |
| 清华大学 | `https://mirrors.tuna.tsinghua.edu.cn/python` | `https://pypi.tuna.tsinghua.edu.cn/simple/` |
| 中科大 | `https://mirrors.ustc.edu.cn/python` | `https://pypi.mirrors.ustc.edu.cn/simple/` |
---
## 9. 常见问题
### Q1: 安装时遇到权限问题?
```bash
# 确保 ~/.local/bin 在 PATH 中
export PATH="$HOME/.local/bin:$PATH"
```
### Q2: 如何更新 uv?
```bash
uv self update
```
### Q3: uv 和 pip 能否共存?
完全可以。uv 兼容 pip 的工作流,两者可共存使用。建议逐步迁移到 uv。
### Q4: 如何查看帮助?
```bash
# 通用帮助
uv help
# 子命令帮助
uv python --help
uv pip --help
```
### Q5: 如何卸载 uv?
```bash
# 删除二进制文件
rm ~/.local/bin/uv ~/.local/bin/uvx
# 删除配置
rm -rf ~/.config/uv
# 删除缓存
rm -rf ~/.cache/uv
# 删除安装的 Python 版本
rm -rf ~/.local/share/uv
```
### Q6: 为什么我执行 `uv python install` 下载很慢?
请检查是否已配置国内镜像源(参见第 8 节),或手动设置:
```bash
export UV_PYTHON_INSTALL_MIRROR="https://registry.npmmirror.com/-/binary/python-build-standalone/"
```
---
## 参考资源
- [uv 官方文档](https://docs.astral.sh/uv/)
- [uv GitHub 仓库](https://github.com/astral-sh/uv)
- [华为云 Python 镜像](https://repo.huaweicloud.com/python)
- [阿里云 PyPI 镜像](https://mirrors.aliyun.com/pypi/simple/)