uv 使用指南
在 Python 的开发生态中,包管理和环境管理一直是一个让人头疼的话题。从 pip 到 pipenv,再到 poetry 和 pdm,工具层出不穷。而最近,由 Astral(Ruff 的开发者)推出的 uv 横空出世,凭借其极快的速度和全能的特性,迅速成为了 Python 开发者的新宠。
本文将带你快速上手 uv,体验这个”终结者”级别的工具。
什么是 uv?
uv 是一个用 Rust 编写的 Python 包安装器和解析器。它的设计初衷是替代 pip、pip-tools 和 virtualenv,但随着版本的迭代,它现在已经具备了替代 poetry(项目管理)、pyenv(Python 版本管理)和 pipx(工具管理)的能力。
核心特点:
- 极速:比 pip 快 10-100 倍。
- 全能:一个工具搞定 Python 安装、虚拟环境、依赖管理、工具运行。
- 兼容:兼容
pyproject.toml标准。
1. 安装 uv
uv 提供了多种安装方式,推荐使用官方的独立安装脚本,这样升级和管理更方便。
macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | shWindows (PowerShell)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"使用 pip 安装
如果你只是想尝鲜,也可以通过 pip 安装:
pip install uv安装完成后,可以通过以下命令验证:
uv --version2. 项目管理 (Modern Workflow)
这是 uv 目前最推荐的使用方式,类似于 poetry 或 npm 的体验。
初始化项目
# 创建一个新项目uv init my-projectcd my-project

这将创建一个 pyproject.toml 文件和一个 .python-version 文件。
添加依赖
不再需要手动激活虚拟环境,uv add 会自动处理虚拟环境的创建和依赖的安装。
# 添加依赖uv add requests
# 添加开发依赖 (例如 pytest)uv add --dev pytest


配置国内镜像源
配置项目镜像
可以参考这个 https://uv.oaix.tech/blog/2025/06/17/quickly-set-uv-package-index-is-china-mirror/ 来配置国内镜像源。


在 pyproject.toml 里面添加下面的内容
[[tool.uv.index]]name = "tencent"url = "https://mirrors.cloud.tencent.com/pypi/simple/" # 腾讯云镜像源


可以看到里面已经用上镜像了
配置全局镜像源
参考这个 https://www.cnblogs.com/ljbguanli/p/19357762
全局配置后,所有项目默认使用指定镜像,无需重复设置。
步骤 1:找到配置文件路径
- Linux/macOS:~/.config/uv/config.toml
- Windows:%USERPROFILE%.config\uv\config.toml(如 C:\Users\你的用户名.config\uv\config.toml)
步骤 2:创建/编辑配置文件
# Linux/macOS:用 vim 打开(若文件不存在会自动创建)vim ~/.config/uv/config.toml# Windows:用记事本打开Write-Host $env:USERPROFILE
notepad %USERPROFILE%\.config\uv\config.toml# 阿里云镜像(推荐,稳定性好)[registries.pypi]index = "https://mirrors.aliyun.com/pypi/simple/"




不过网上推荐的都是直接设置环境变量
UV_DEFAULT_INDEX
For Linux Users:
# 推荐使用清华源echo 'export UV_DEFAULT_INDEX="https://pypi.tuna.tsinghua.edu.cn/simple"'>> ~/.bashrc
# 或者用阿里源# echo 'export UV_DEFAULT_INDEX="https://mirrors.aliyun.com/pypi/simple/"' >> ~/.bashrc
# 让配置立即生效source ~/.bashrcFor Windows Users:
这个只在当前会话生效,关闭会话后就会失效。
$env:UV_DEFAULT_INDEX = "https://pypi.tuna.tsinghua.edu.cn/simple"想永久生效就

环境变量不知道去哪儿找可以直接 windows 搜索 环境变量 就可以找到。


如果是已经有的项目,如何用 uv 同步包呢?
如果是已经有的项目,你可以使用 uv sync 命令来同步项目的依赖。
uv sync这将根据 pyproject.toml 中的配置,安装所有必要的依赖。


运行代码
使用 uv run 可以在项目的虚拟环境中执行命令,无需显式激活环境。
# 运行脚本uv run main.py
# 运行工具uv run pytest

同步环境
如果你拉取了别人的代码,或者手动修改了 pyproject.toml,可以使用 sync 命令同步环境:
uv sync3. Python 版本管理
uv 内置了 Python 版本管理功能,这意味着你不再需要安装 pyenv 或 conda 来管理不同的 Python 版本。
# 列出可用的 Python 版本uv python list
# 安装特定版本的 Pythonuv python install 3.12
# 为当前项目指定 Python 版本uv python pin 3.11当你运行 uv run 或 uv sync 时,uv 会自动下载并使用项目指定的 Python 版本。
这个也可以用镜像,不然走github国内很慢 很简单

UV_PYTHON_INSTALL_MIRROR
https://mirror.nju.edu.cn/github-release/astral-sh/python-build-standalone/linux的话
export UV_PYTHON_INSTALL_MIRROR="https://mirror.nju.edu.cn/github-release/astral-sh/python-build-standalone/"
4. 脚本支持 (Script Support)
uv 对单文件脚本的支持非常出色。你可以在脚本顶部声明依赖,uv 会自动下载并运行,且不会污染全局环境。
创建一个 example.py:
# /// script# requires-python = ">=3.11"# dependencies = [# "requests<3",# "rich",# ]# ///
import requestsfrom rich.pretty import pprint
resp = requests.get("https://peps.python.org/api/peps.json")data = resp.json()pprint([(k, v["title"]) for k, v in data.items()][:10])直接运行:
uv run example.pyuv 会自动解析头部元数据,创建一个临时环境并安装依赖,然后执行脚本。
5. 工具管理 (Tool Management)
类似于 pipx,uv 可以安装和运行全局的 Python 命令行工具。
# 临时运行一个工具 (例如 ruff)uvx ruff check .# 或者uv tool run ruff check .
# 安装一个工具到全局uv tool install black6. 兼容 pip 的接口 (Legacy Interface)
如果你不想改变现有的工作流,只想利用 uv 的速度,可以使用它的 pip 兼容接口。
# 创建虚拟环境uv venv
# 创建指定版本的虚拟环境uv venv --python 3.12
# 激活环境 (Windows).venv\Scripts\activate# 激活环境 (macOS/Linux)source .venv/bin/activate
# 安装依赖 (替代 pip install)uv pip install requests
# 从 requirements.txt 安装uv pip install -r requirements.txt
# 生成锁定文件 (替代 pip-compile)uv pip compile pyproject.toml -o requirements.txt总结
uv 正在以惊人的速度重塑 Python 的开发体验。它不仅解决了”慢”的问题,更重要的是它试图统一碎片化的 Python 工具链。
迁移建议:
- 新项目:直接使用
uv init和uv add的工作流。 - 老项目:可以先用
uv pip替代pip加速安装,时机成熟后迁移到pyproject.toml管理。 - 脚本:强烈推荐使用
uv run运行带依赖声明的单文件脚本。
发现错误或想要改进这篇文章?
在 GitHub 上编辑此页