欢迎光临邳州九九信息网
详情描述
Python包管理工具之uv的使用详细指南

uv:新一代高性能 Python 包管理工具指南

一、uv 简介

uv 是由 Astral 公司(Ruff 的创建者)开发的用 Rust 编写的超快速 Python 包管理器和解析器,旨在替代 pip、pip-tools、virtualenv、pipenv、poetry 等工具。

主要优势

  • 速度极快:比传统工具快 10-100 倍
  • 🚀 一体化工具:包管理 + 虚拟环境 + 依赖解析
  • 📦 兼容性强:支持 pip、pip-tools、poetry 的工作流
  • 🔧 现代化设计:内置虚拟环境、快速依赖解析、并行下载

二、安装 uv

1. 快速安装(推荐)
# Linux/macOS
curl -LsSf https://astral.sh/uv/install.sh | sh

# Windows (PowerShell)
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

# 使用 pip(如果需要)
pip install uv
2. 验证安装
uv --version
# 输出示例:uv 0.1.0 (Rust 1.75.0)

三、核心功能与使用

1. 项目初始化
# 创建新项目目录
mkdir myproject && cd myproject

# 初始化 pyproject.toml(类似 poetry)
uv init
# 或手动创建项目结构
2. 依赖管理

添加依赖

# 添加单个包(默认到 main 依赖组)
uv add requests

# 添加指定版本的包
uv add "flask>=2.0,<3.0"

# 添加到开发依赖组
uv add --dev pytest black mypy

# 添加多个包
uv add pandas numpy matplotlib

查看依赖

# 查看已安装的包
uv pip list

# 查看依赖树
uv tree

更新依赖

# 更新所有包到最新兼容版本
uv update

# 更新指定包
uv update requests pandas

# 更新到指定版本
uv add "django==4.2.0"

移除依赖

uv remove requests
3. 虚拟环境管理

自动虚拟环境(默认):

# uv 会自动创建和管理 .venv
uv add requests  # 自动使用 .venv

手动指定虚拟环境

# 创建新虚拟环境
uv venv .venv

# 使用现有虚拟环境
uv sync --python 3.11

激活虚拟环境

# Linux/macOS
source .venv/bin/activate

# Windows
.venv\Scripts\activate
4. 依赖同步与安装

从 pyproject.toml 安装

# 安装所有依赖(包括开发依赖)
uv sync

# 仅安装生产依赖
uv sync --no-dev

# 安装并生成锁文件
uv sync --locked

从 requirements.txt 安装

# 安装 requirements.txt 中的依赖
uv pip install -r requirements.txt

# 生成 requirements.txt
uv pip compile pyproject.toml -o requirements.txt
5. Python 版本管理
# 使用特定 Python 版本
uv sync --python 3.11
uv sync --python 3.12

# 查看支持的 Python 版本
uv python list

# 安装特定 Python 版本
uv python install 3.12

四、项目配置示例

1. pyproject.toml 示例
[project]
name = "myproject"
version = "0.1.0"
description = "My awesome project"
requires-python = ">=3.8"
dependencies = [
    "requests>=2.28.0",
    "pandas>=1.5.0",
    "sqlalchemy>=2.0.0",
]

[project.optional-dependencies]
dev = [
    "pytest>=7.0.0",
    "black>=23.0.0",
    "mypy>=1.0.0",
    "ruff>=0.1.0",
]
docs = [
    "sphinx>=6.0.0",
    "mkdocs>=1.4.0",
]

[tool.uv]
# uv 特定配置(可选)
2. 锁文件 (uv.lock)
# 生成锁文件
uv lock

# 使用锁文件安装(确保一致性)
uv sync --locked

五、工作流示例

1. 新项目完整流程
# 1. 创建项目
mkdir new-project && cd new-project
uv init

# 2. 添加依赖
uv add fastapi "pydantic>=2.0.0"
uv add --dev pytest ruff

# 3. 安装所有依赖
uv sync

# 4. 激活环境
source .venv/bin/activate

# 5. 运行代码
uv run python main.py
2. 现有项目迁移
# 从 requirements.txt 迁移
uv pip compile requirements.txt -o pyproject.toml

# 或从 poetry 迁移
# 保持 pyproject.toml,直接使用 uv 管理
uv sync
3. CI/CD 配置示例
# GitHub Actions 示例
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: astral-sh/setup-uv@v1
        with:
          python-version: "3.11"
      - run: uv sync --dev
      - run: uv run pytest

六、高级功能

1. 源码安装
# 从 Git 仓库安装
uv add "git+https://github.com/user/repo.git"

# 从本地路径安装
uv add ./path/to/package
2. 镜像源配置
# 设置镜像源
export UV_INDEX_URL="https://pypi.tuna.tsinghua.edu.cn/simple"
export UV_EXTRA_INDEX_URL="https://mirrors.aliyun.com/pypi/simple/"

# 或使用配置文件
# ~/.config/uv/config.toml
[install]
index-url = "https://pypi.tuna.tsinghua.edu.cn/simple"
3. 依赖分组安装
# 安装特定组的依赖
uv sync --group docs
uv sync --group dev
4. 离线模式
# 创建离线包缓存
uv pip download -d ./packages -r requirements.txt

# 离线安装
uv pip install --no-index --find-links ./packages -r requirements.txt

七、常用命令速查

命令 描述 等价命令
uv add <package> 添加依赖 poetry add
uv remove <package> 移除依赖 poetry remove
uv sync 安装所有依赖 poetry install
uv lock 生成锁文件 poetry lock
uv update 更新依赖 poetry update
uv tree 显示依赖树 pipdeptree
uv venv 创建虚拟环境 python -m venv
uv run 在虚拟环境中运行命令 -

八、最佳实践建议

版本控制

  • pyproject.tomluv.lock 提交到版本控制
  • 忽略 .venv 目录

依赖管理

# 使用精确版本范围
uv add "package>=1.0,<2.0"

# 定期更新依赖
uv update --dry-run  # 先查看更新
uv update  # 执行更新

性能优化

# 并行安装(默认启用)
uv sync --no-cache  # 禁用缓存(测试用)

# 使用系统 Python(更快)
uv sync --system

多环境配置

# pyproject.toml
[tool.uv.python]
version = "3.11"

[tool.uv.dev-dependencies]
test = ["pytest", "pytest-cov"]
lint = ["ruff", "black"]
type = ["mypy", "types-requests"]

九、故障排除

清理缓存

uv cache clean

调试模式

UV_LOG=debug uv sync

解决依赖冲突

# 查看依赖解析问题
uv tree --all

# 使用 pip 兼容模式
uv pip install --resolution=backtracking

十、从其他工具迁移

原工具 迁移步骤
pip + venv 1. uv init
2. uv add 添加依赖
3. 删除 requirements.txt
Poetry 1. 保持现有 pyproject.toml
2. uv sync 替换 poetry install
3. 删除 poetry.lock,使用 uv.lock
Pipenv 1. uv pip compile Pipfile
2. 生成 pyproject.toml
3. 删除 Pipfile/Pipfile.lock
Conda 1. 导出环境: conda env export
2. 转换为 requirements.txt
3. uv pip install -r requirements.txt

uv 通过其卓越的性能和一体化设计,正在成为 Python 包管理的新标准。它特别适合需要快速迭代的现代开发工作流和 CI/CD 环境。