Python 工具链的"瑞士军刀"--uv

98 阅读3分钟

uv 是由 Astral(也就是开发 ruff 那家公司)出的一款用 Rust 编写的超快 Python 包和环境管理器,2024 年发布以来迅速成为业界新宠,被誉为 "pip + venv + pip-tools + virtualenv + pyenv 的合体替代品"。

一句话定位

Python 工具链的"瑞士军刀":装包、建虚拟环境、管 Python 版本、锁依赖、跑脚本,一条命令全搞定,而且比 pip 快 10~100 倍

它能干什么(对应替代谁)

传统工具uv 等价命令干啥
pyenv install 3.12uv python install 3.12装 Python 解释器
python3 -m venv .venvuv venv建虚拟环境
pip install requestsuv pip install requests装包(pip 兼容模式)
pip install -r requirements.txtuv pip sync requirements.txt同步依赖
pip-compileuv pip compile requirements.in锁依赖版本
pipx install ruffuv tool install ruff全局装 CLI 工具
python script.pyuv run script.py自动建临时环境跑脚本

为什么火

⚡ 1. 极致速度

操作pipuv
全新装 50 个包30s+~1s
缓存命中重装几秒几十毫秒

得益于:Rust 实现 + 全局缓存 + 并行下载 + 硬链接复用。

🎯 2. 一个工具搞定全套

不再需要装一堆工具(pyenv/pipx/virtualenv/pip-tools...),uv 一个就够。

🔄 3. 跟 pip 100% 兼容

uv pip install xxxuv pip freezeuv pip uninstall 用法跟 pip 完全一样,零学习成本

📦 4. 自带 Python 版本管理

不需要先装 Python,直接:

uv python install 3.12
uv venv --python 3.12

uv 会自动下载对应 Python 解释器(独立预编译版本,不依赖系统)。

安装

# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

# 或用 brew
brew install uv

# 或用 pip 装(少见)
pip install uv

常用命令速查

# === 环境 ===
uv venv                          # 在当前目录建 .venv
uv venv --python 3.12            # 指定 Python 版本
source .venv/bin/activate        # 激活(跟 venv 一样)

# === 装包(pip 兼容子命令)===
uv pip install requests
uv pip install -r requirements.txt
uv pip uninstall requests
uv pip list
uv pip freeze > requirements.txt

# === 锁依赖 ===
uv pip compile requirements.in -o requirements.txt
uv pip sync requirements.txt     # 严格同步(多余的包会卸载)

# === 临时跑脚本(神器)===
uv run --with requests python -c "import requests; print(requests.__version__)"
# 不用激活环境,uv 自动建临时 venv 装好 requests 再执行

# === 项目模式(类似 poetry)===
uv init my-project               # 创建项目骨架
uv add requests                  # 加依赖(自动写 pyproject.toml + 锁文件)
uv remove requests               # 移除依赖
uv sync                          # 按锁文件同步
uv lock                          # 重新生成锁文件

# === Python 版本 ===
uv python install 3.12 3.11
uv python list

# === 全局工具 ===
uv tool install ruff             # 类似 pipx
uv tool run black .              # 临时跑

对比一下你之前的命令

之前你想这样做:

cd xxx
python3 -m venv .venv
source .venv/bin/activate
pip install requests python-dotenv

uv 一气呵成、还快得多:

cd xxx
uv venv
source .venv/bin/activate
uv pip install requests python-dotenv

或者更现代的项目模式(写到 requirements.txt,自动管锁文件):

uv init # 生成 pyproject.toml
uv add requests python-dotenv
uv run python agents/s01_agent_loop_idealab.py

适合谁

场景推荐
想要又快又省心的 Python 工具链uv
老项目用 pip + venv,没必要换留着 pip 也行
要严格依赖锁定(生产/CI)uv 比 pip 友好
数据科学(依赖 conda 生态、CUDA)还是 conda
写 CLI 工具想全局装uv tool install(类 pipx)

一句话总结

uv 是 2024 年 Python 工具链的"颠覆者"——把 pip / venv / pyenv / pipx / pip-tools 几个工具的活儿用 Rust 重写到一个二进制里,速度提升 10~100 倍,命令兼容旧习惯,新项目无脑用它就对了