uv 使用速查与实战笔记
一、uv 是什么
uv 是一个由 Rust 编写的高速 Python 包与项目管理工具,由 Astral(Ruff 的开发商)推出。
它的目标是成为 Python 领域的“一站式工具”,整合并替代以下常见工具的核心功能:
- pip(安装依赖)
- poetry / pipenv(项目与依赖管理)
- pip-tools(锁文件)
- pyenv(Python 版本管理)
- virtualenv / venv(虚拟环境)
- pipx(CLI 工具管理)
核心优势只有一句话:快,而且简单。
二、安装 uv
推荐使用官方独立安装方式。
macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
Windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
说明:
- 不依赖系统 Python
- 不需要安装 Rust
- 会自动下载并管理 Python
三、uv 的四种典型使用场景
场景 A:正式 Python 项目(替代 Poetry / Pipenv)
适用于:
- 长期维护项目
- 有明确依赖管理需求
- 需要锁版本、可复现环境
1. 初始化项目
uv init crypto-checker
cd crypto-checker
生成内容包括:
pyproject.toml:项目与依赖配置uv.lock:依赖锁文件.python-version:Python 版本锁定- 示例 Python 文件
2. 添加依赖
uv add httpx rich
uv 会自动:
- 创建
.venv虚拟环境 - 安装依赖
- 写入
pyproject.toml - 生成或更新
uv.lock
3. 编写代码(示例)
import httpx
from rich.console import Console
from rich.panel import Panel
def main():
console = Console()
url = "https://api.coindesk.com/v1/bpi/currentprice.json"
with console.status("正在获取比特币价格..."):
response = httpx.get(url, timeout=10.0)
response.raise_for_status()
data = response.json()
price = data["bpi"]["USD"]["rate"]
console.print(
Panel(
f"Bitcoin Price: ${price}",
title="Crypto Checker",
)
)
if __name__ == "__main__":
main()
4. 运行项目
uv run hello.py
说明:
- 不需要手动激活虚拟环境
- uv 会自动使用
.venv
5. 同步环境(给同事 / 新机器)
uv sync
uv 会严格根据 uv.lock 还原环境。
场景 B:单文件脚本(PEP 723 脚本依赖)
适用于:
- 临时脚本
- 运维 / 数据处理
- 不想创建项目目录
1. 创建脚本并声明依赖
echo 'print("Hello")' > weather.py
uv add --script weather.py requests
脚本会被自动改写为:
# /// script
# requires-python = ">=3.12"
# dependencies = [
# "requests",
# ]
# ///
print("Hello")
2. 完整示例
# /// script
# requires-python = ">=3.12"
# dependencies = [
# "requests",
# ]
# ///
import requests
resp = requests.get("https://wttr.in/Shanghai?format=3")
print(f"当前天气: {resp.text}")
3. 运行脚本
uv run weather.py
特点:
- 不创建
.venv - 在缓存目录创建隔离环境
- 可复用、但不污染当前目录
场景 C:CLI 工具(替代 pipx)
1. 临时运行工具(uvx)
uvx pycowsay "uv is fast!"
说明:
- 首次运行会下载工具
- 会缓存隔离环境
- 下次运行直接复用
缓存位置通常在:
~/.cache/uv/
2. 安装常用工具
uv tool install ruff
- 安装到用户级别
- 不污染系统 Python
场景 D:Python 版本管理(替代 pyenv)
安装 Python
uv python install 3.12
固定项目 Python 版本
uv python pin 3.11
会生成 .python-version 文件。
四、最常用命令速查
| 命令 | 作用 |
|---|---|
uv init | 创建项目 |
uv add <pkg> | 添加依赖 |
uv run <cmd> | 在环境中运行 |
uv sync | 同步依赖 |
uvx <tool> | 临时运行工具 |
uv tool install | 安装 CLI 工具 |
uv python install | 安装 Python |
五、使用心得总结
- 项目用 uv init / uv add / uv run
- 脚本用 PEP 723 + uv run
- CLI 工具用 uvx / uv tool install
- 不再手动管理 venv
- 不再纠结 Python 版本
一句话总结:
uv 把 Python 开发中“环境、依赖、工具”这三件最烦的事,统一成了一套又快又干净的工作流。