Python 新的包管理器uv介绍

📦 Python 包管理器 UV 介绍

✅ 1. 背景与简介

在现代 Python 项目中,包管理与构建工具种类繁多,如 pip, poetry, pipenv,但这些工具存在:

  • 安装慢 🚶‍♂️
  • 解析依赖慢 🐢
  • 难以部署到 CI/CD 中 ⛓️

为此,Astral 公司推出了新一代超快包管理器 —— **UV**。

🌟 UV 是什么?

UV 是一个使用 Rust 编写的 Python 包管理器,兼容 pip/virtualenv,但性能极高。它支持解析、下载、构建和安装 Python 包,是 pip 的 drop-in 替代。

  • 构建于 Rust:极致性能
  • 支持 pyproject.toml
  • 完整的虚拟环境管理器
  • 安装速度是 pip 的 8 倍+

🧪 2. 安装与基本用法

✅ 安装 UV

1
2
# 推荐方式(跨平台)
curl -Ls https://astral.sh/uv/install.sh | bash

或使用 Homebrew:

1
brew install astral-sh/uv/uv

安装完成后,检查版本:

1
uv --version

🔁 如何使用 pip 安装 UV?

虽然 UV 推荐使用官方提供的安装脚本或 Homebrew(在 macOS 上),但也可以通过 pip 安装(适合有网络限制的企业场景或需要私有源的 CI/CD 环境)。

✅ 方法一:使用 pip 安装 uv(通过 PyPI)

注意:​UV 是用 Rust 编写的​,通过 PyPI 安装实际上是安装其 Python 接口(不是官方推荐方式,但某些企业项目允许)

1
pip install uv-py

⚠️ 安装后并非完整 uv 功能,仅用于尝鲜或集成某些 Python 工具。


✅ 初始化项目(推荐用 pyproject.toml

1
uv init

将生成项目结构:

1
2
3
4
5
.
├── pyproject.toml
└── src/
└── your_module/
└── __init__.py

📄 3. 了解 pyproject.toml

pyproject.toml 是什么?

PEP 518/621 定义了 pyproject.tomlPython 项目元数据的标准格式

它可取代:

  • setup.py
  • requirements.txt
  • setup.cfg

用于声明:

  • 项目信息(名称、版本、作者)
  • 构建系统(如 setuptools/poetry)
  • 依赖项
  • 工具配置(如 black, mypy, flake8)

目标:统一并标准化 Python 项目的构建、打包与依赖管理。

它用来替代传统的:

老工具 对应功能
setup.py 包描述 & 安装入口
setup.cfg 配置参数
requirements.txt 依赖包管理
MANIFEST.in 文件清单

✅ 示例:典型的 pyproject.toml

1
2
3
4
5
6
7
8
9
10
11
12
13
[project]
name = "my-enterprise-tool"
version = "0.1.0"
description = "A fast backend tool for enterprise batch tasks"
authors = [{ name="Your Name", email="[email protected]" }]
dependencies = [
"requests>=2.26.0",
"pydantic>=2.0",
"redis",
]

[tool.uv]
virtualenvs.in-project = true

✅ 为什么企业推荐使用 pyproject.toml

优势点 说明
🧩统一依赖管理 不再需要分散的setup.pyrequirements.txt
📦​支持多构建工具​(如poetry,uv,setuptools 可兼容多种构建方式
🚀便于自动化与 CI/CD 管理 易于脚本解析和工具链接入
🔍结构清晰 TOML 格式适合结构化编辑和机器解析
🎯可声明可选依赖、开发依赖等环境区分 方便 dev/prod 环境切换

pyproject.toml 的局限与注意事项

局限/问题 企业建议或解决方案
❗ 不支持 shell 脚本逻辑 替代setup.py后,逻辑需写入构建钩子插件
📦 安装过程中不解析注释 需通过文档记录复杂依赖说明
🚧 某些旧项目工具不兼容 建议升级构建工具或混合使用requirements.txt
💼 CI/CD 中初次上手成本略高 建议团队编写统一模板与校验工具

⚙️ 4. 安装依赖与开发工具集成

✅ 安装依赖

1
uv pip install -r requirements.txt

或使用 pyproject.toml

1
uv pip install .

✅ 添加开发依赖

1
uv pip install --dev black mypy pytest

这些会被记录在 [tool.uv.dev-dependencies] 中。


🧑‍💻 5. 企业实战场景

✅ 示例 1:项目初始化 + 安装依赖

1
2
uv init
uv pip install fastapi uvicorn

✅ 示例 2:创建虚拟环境并激活

1
2
uv venv
source .venv/bin/activate

✅ 示例 3:自动格式化与类型检查

1
2
3
uv pip install --dev black mypy
black src/
mypy src/

🛠 6. 与其他工具对比(pip/poetry)

功能/工具 pip poetry UV
安装速度 🚀 快
支持 pyproject
虚拟环境管理 手动 自动 ✅ 自动
构建打包
多平台兼容性
CI/CD 适配性 ✅ 高

📘 7. 高级用法

🔐 私有源配置

支持使用私有 PyPI:

1
uv pip install --index-url https://your.private.repo/simple internal-lib

或在 .uv/config.toml 添加:

1
2
[tool.uv]
index-url = "https://your.private.repo/simple"

📦 构建 wheel 包

1
uv build

生成:

1
2
dist/
├── my_enterprise_tool-0.1.0-py3-none-any.whl

🧪 8. 示例代码:一个完整项目

1
2
3
4
5
6
7
8
9
# src/main.py
import requests

def fetch_data():
resp = requests.get("https://httpbin.org/json")
return resp.json()

if __name__ == "__main__":
print(fetch_data())
1
uv run src/main.py

📦 9. 总结

特性 UV 价值
极致性能 ✅ 安装快、解析快
企业适配性强 ✅ CI/CD 支持好
标准化配置 ✅ 使用 pyproject.toml
替代 pip/poetry ✅ 一站式解决方案

🔚 附录:命令速查表

1
2
3
4
5
6
uv init                  # 初始化项目
uv pip install pkg # 安装依赖
uv pip install --dev # 安装开发依赖
uv venv # 创建虚拟环境
uv build # 构建项目
uv run main.py # 执行脚本

Python 新的包管理器uv介绍
https://dreamshao.github.io/2025/07/29/python新的包管理器/
作者
Yun Shao
发布于
2025年7月29日
许可协议