uv: Python 新一代极速包管理工具

在 Python 开发的世界里,环境配置和依赖管理一直是让无数开发者头疼的难题。从 pipvirtualenv,从 condapoetry,我们总是在寻找一个既能保证环境隔离,又能兼顾安装速度的完美方案。今天,我们要介绍的主角------uv,正是为终结这种混乱而生的新一代 Python 包管理工具。

什么是 uv?

uv 是由 Astral 团队(也是知名代码检查工具 Ruff 的开发者)使用 Rust 语言编写的极速 Python 包和环境管理工具。它的核心优势在于极致的性能 :官方基准测试显示,uv 创建虚拟环境和安装依赖的速度比传统的 pipvenv 快 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

    如果对应的文件夹或文件不存在,可以手动创建它们。

  • 编辑配置文件内容 使用文本编辑器打开 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.tomlREADME.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 命令行工具(如 ruffjupyter),却不想把它安装到当前项目或全局环境中时,uvx 是你的最佳选择。工具运行结束后,临时环境会被妥善处理,不会污染你的任何项目。 比如我们想运行一个mcp程序给ai调用,这个时候就可以用uvx工具运行脚本

避坑指南与最佳实践

  1. 统一使用 uv add :在 uv 管理的项目中,永远使用 uv add 来安装依赖。直接使用 uv pip install 虽然速度很快,但它不会 自动更新 pyproject.toml,这会导致依赖丢失,破坏项目的可复现性。
  2. 警惕 pyenv 冲突 :如果你之前使用过 pyenv,请注意终端中的 pythonpip 命令可能被 pyenv 的 shims 劫持。在 uv 项目中,请养成使用 uv run 前缀的习惯,或者直接使用 uv add
相关推荐
promising_xxx1 小时前
深度学习个人开源知识库 深度筑基 | DeepBase
人工智能·python·深度学习·计算机视觉·ai·语言模型·nlp
三十岁老牛再出发1 小时前
07.07.每日总结
c语言·windows·python
C137的本贾尼2 小时前
MCP 完全指南:从零开始掌握模型上下文协议
人工智能·python
威联通安全存储3 小时前
SMT表面贴装线AOI检测网中TS-h2287XU-RP混合架构的物理部署
python·架构
大鱼>3 小时前
Scikit-learn Pipeline:构建可复用的 ML 流水线
python·机器学习·scikit-learn
闲猫3 小时前
深入理解 Skills:从 API 调用到智能体行为封装
人工智能·python·langchain
还是鼠鼠3 小时前
AI掘金头条新闻系统 (Toutiao News)-缓存相关推荐新闻
后端·python·mysql·fastapi·web
骑士雄师3 小时前
大模型:runnable
python·embedding
2401_868534783 小时前
系统分析师案例分析题常考知识点
python·计算机网络