在 Python 开发的世界里,环境配置和依赖管理一直是让无数开发者头疼的难题。从 pip 到 virtualenv,从 conda 到 poetry,我们总是在寻找一个既能保证环境隔离,又能兼顾安装速度的完美方案。今天,我们要介绍的主角------uv,正是为终结这种混乱而生的新一代 Python 包管理工具。
什么是 uv?
uv 是由 Astral 团队(也是知名代码检查工具 Ruff 的开发者)使用 Rust 语言编写的极速 Python 包和环境管理工具。它的核心优势在于极致的性能 :官方基准测试显示,uv 创建虚拟环境和安装依赖的速度比传统的 pip 和 venv 快 10 到 100 倍。
更重要的是,uv 并非要完全抛弃现有生态,而是提供了一个大一统的工作流。它完全兼容 pip 的命令行接口和 requirements.txt 格式,同时引入了现代化的 pyproject.toml 标准,让你可以优雅地管理 Python 版本、虚拟环境、项目依赖以及全局工具。
安装 uv
uv 支持 Windows、macOS 和 Linux 全平台。推荐使用官方提供的一键安装脚本:
bash
# Linux / macOS
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows (PowerShell)
irm https://astral.sh/uv/install.ps1 | iex
安装完成后,可以通过 uv --version 验证是否安装成功。
配置 uv 全局镜像
-
找到或创建全局配置文件
uv的全局配置文件名为uv.toml,根据操作系统的不同,路径如下:- Windows :
%APPDATA%\uv\uv.toml(通常是C:\Users\你的用户名\AppData\Roaming\uv\uv.toml) - macOS / Linux :
~/.config/uv/uv.toml
如果对应的文件夹或文件不存在,可以手动创建它们。
- Windows :
-
编辑配置文件内容 使用文本编辑器打开
uv.toml文件,将以下内容复制进去即可。这里以配置国内常用的镜像源为例:
ini
# 1. CPython 代理配置(加速下载 Python 解释器)
python-install-mirror = "https://cnb.cool/astral-sh/python-build-standalone/-/releases/download/"
# 2. PyPI 源配置(加速下载第三方包)
[[index]]
url = "https://pypi.tuna.tsinghua.edu.cn/simple"
default = true
使用
Python版本管理
uv 内置了强大的 Python 版本管理器,完全可以替代 pyenv。
- 查看可用版本 :
uv python list - 安装指定版本 :
uv python install 3.12 - 锁定项目版本 :在项目目录下运行
uv python pin 3.12,uv 会生成.python-version文件。以后无论是你还是你的同事,只要在这个目录下运行 uv 命令,都会自动使用 Python 3.12,彻底解决"在我机器上能跑"的千古难题。
项目初始化
uv 推崇以 pyproject.toml 为核心的现代项目管理方式。
-
创建新项目 :运行
uv init [my-project]。即可一键生成包含pyproject.toml、README.md和.gitignore的标准项目结构。 -
同步环境 :运行
uv sync。 当从 Git 克隆一个新项目后,只需在项目根目录运行uv sync。uv 会自动读取配置,安装正确版本的 Python,创建.venv虚拟环境,并严格根据uv.lock文件安装所有依赖。它甚至会自动卸载环境中多余的包,确保本地环境与项目定义 100% 一致。 -
配置国内镜像源 :为了加速依赖下载,可以在项目
pyproject.toml中一劳永逸地配置镜像源:
ini
[[tool.uv.index]]
url = "https://pypi.tuna.tsinghua.edu.cn/simple"
default = true
依赖管理
在日常开发中,请彻底告别手动编辑配置文件或直接使用 pip install 的习惯。
- 添加依赖 :运行
uv add pandas,uv 会自动解析依赖、更新pyproject.toml并同步虚拟环境。 - 移除依赖 :运行
uv remove pandas,uv 会同步清理配置文件和虚拟环境。 - 运行脚本 :使用
uv run python main.py,uv 会自动匹配正确的虚拟环境并执行,无需手动source activate。
临时工具运行
uvx 这是 uv 最让人惊艳的功能之一。当你想临时使用某个 Python 命令行工具(如 ruff、jupyter),却不想把它安装到当前项目或全局环境中时,uvx 是你的最佳选择。工具运行结束后,临时环境会被妥善处理,不会污染你的任何项目。 比如我们想运行一个mcp程序给ai调用,这个时候就可以用uvx工具运行脚本
避坑指南与最佳实践
- 统一使用
uv add:在 uv 管理的项目中,永远使用uv add来安装依赖。直接使用uv pip install虽然速度很快,但它不会 自动更新pyproject.toml,这会导致依赖丢失,破坏项目的可复现性。 - 警惕 pyenv 冲突 :如果你之前使用过
pyenv,请注意终端中的python或pip命令可能被 pyenv 的 shims 劫持。在 uv 项目中,请养成使用uv run前缀的习惯,或者直接使用uv add。