uv
uv 是 Astral 公司用 Rust 编写的新一代 Python 包与项目管理工具,目标是用一个工具替代 pip、pip-tools、venv、pipx、poetry、pyenv 等一堆分散的工具。它的依赖解析和安装速度比传统工具快一到两个数量级,并且自带 Python 版本管理能力,是目前社区推荐的默认起点。
安装
# Linux / macOS
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows PowerShell
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
# 也可以用 pipx 安装
pipx install uvPython 版本管理
uv 内置了 Python 解释器的下载与管理,不需要额外安装 pyenv:
# 安装指定的 Python 版本(会自动下载)
uv python install 3.12 3.13
# 查看已安装 / 可安装的版本
uv python list
uv python list --only-installed
# 为当前目录固定一个 Python 版本,生成 .python-version 文件
uv python pin 3.12快速创建虚拟环境(pip 兼容模式)
如果只是想要一个类似 venv 的轻量虚拟环境,uv venv 是 python -m venv 的高速替代品:
# 创建虚拟环境,可指定 Python 版本(不存在会自动下载)
uv venv --python 3.12.0
# 激活方式与 venv 完全一致
source .venv/bin/activate
# 用 uv 加速 pip 安装(兼容 pip 命令行)
uv pip install requests
uv pip install -r requirements.txt项目模式(推荐):pyproject.toml + 锁文件
对于正式项目,更推荐使用 uv 的项目管理模式,用 pyproject.toml 声明依赖、用 uv.lock 锁定版本,保证团队和 CI 环境安装出完全一致的依赖树:
# 初始化一个新项目,生成 pyproject.toml 等标准结构
uv init example
cd example
# 添加依赖:自动更新 pyproject.toml,解析并写入 uv.lock,安装到 .venv
uv add ruff
# 添加仅开发环境需要的依赖(写入 dependency-groups.dev)
uv add --dev pytest
# 移除依赖
uv remove ruff
# 在项目虚拟环境中运行命令,无需手动 activate
uv run pytest
# 根据 pyproject.toml 重新解析生成锁文件
uv lock
# 根据锁文件精确同步 .venv(保证环境与 uv.lock 完全一致)
uv sync
# 查看依赖树
uv treeuv.lock 会锁定包括间接依赖在内的精确版本和哈希值,相比 requirements.txt 提供了真正的可重复构建保证——这也是 uv 项目模式与 venv+pip 最大的区别。
直接运行脚本(内联依赖声明)
对于单文件脚本,uv 支持在文件头部用注释声明依赖,uv run 会自动创建临时环境并安装依赖后执行:
uv add --script example.py requests# example.py
# /// script
# dependencies = ["requests"]
# ///
import requests
print(requests.get("https://astral.sh").status_code)uv run example.py # 自动解析 dependencies 并执行,无需手动建环境uv 用
uv add/uv remove 替代 poetry add、用 uv python install/pin 替代 pyenv、用 uv run --with 替代 pipx run,一个工具覆盖了 Python 生态里过去需要五六个独立工具才能完成的工作,因此现在是新项目的默认推荐。最后更新于