Py学习  »  Python

UV,Python 包管理神器 - 比 pip 快 100 倍

程序员老朱 • 5 天前 • 184 次点击  

UV是新一代Python包和项目管理工具。它使用Rust语言编写,具有非凡的性能和全面的功能。强烈推荐给全部Python开发者。

中文文档:https://uv.doczh.com/


一、为什么选择UV

  • 「极速安装」: 比pip快10-100倍!
  • 「统一工具链」:一个工具替代pip、pip-tools、pipx、poetry、pyenv、virtualenv等
  • 「全面的项目管理」:支持依赖管理、智能依赖解析、环境隔离、锁文件
  • 「Python版本管理」:安装和管理不同版本的Python
  • 「工具运行和安装」:可以直接运行和安装Python应用
  • 「脚本支持」:运行单文件脚本,支持内联依赖元数据
  • 「兼容pip」:提供pip兼容接口,无需改变现有工作流

二、快速上手

Step 1️⃣:一键安装

首先,您需要通过以下命令安装UV。根据您的操作系统,选择对应的安装方式。

# macOS/Linux 用户
curl -LsSf https://astral.sh/uv/install.sh | sh

# Windows 用户
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

# 也可以用包管理器
brew install uv          # macOS
scoop install uv         # Windows

Step 2️⃣:创建项目

安装完成后,使用 uv init 命令来初始化一个新的项目。这会创建一个标准的项目结构,包含所有必要的配置文件。

uv init mcp-server-db
cd mcp-server-db

# 自动生成标准项目结构 📁
# ├── README.md
# ├── pyproject.toml  
# ├── .gitignore
# ├── .python-version
# └── main.py
  • .gitignore:Git忽略文件
  • .python-version:Python版本信息
  • main.py:主程序文件
  • pyproject.toml:项目配置文件
  • README.md:项目说明文件

Step 3️⃣:管理依赖

项目创建后,您可以使用 uv add 添加项目依赖,使用 uv sync 安装所有依赖,并使用 uv run 在项目的虚拟环境中运行脚本。

# 添加包,类似pip install
uv add requests mpc[lic]

# 添加开发工具
uv add pytest black ruff --dev

# 一键安装所有依赖
uv sync

# 运行代码(自动激活环境)
uv run python main.py

三、日常使用技巧

🛠️ 项目管理篇

快速添加依赖

uv add 命令功能强大,不仅可以添加依赖,还能指定版本、分组管理和标记可选依赖。

# 基础用法
uv add requests          # 添加最新版本
uv add "django>=4.0"     # 指定版本范围
uv add pytest --dev     # 开发依赖

# 同时也支持pip命令
uv pip install -r requirements.txt

# 高级用法
uv add jupyter --group notebook    # 分组管理
uv add mysql-connector-python --optional database  # 可选依赖

环境同步

uv sync 命令根据 pyproject.toml 和 uv.lock 文件来同步您的项目环境,确保依赖完全一致。

# 完整同步(包括开发依赖)
uv sync

# 只要生产依赖
uv sync --no-dev

# 同步特定组
uv sync --group docs --group test

🐍 Python版本管理篇

UV内置了Python版本管理功能,可以轻松安装、切换和使用不同版本的Python解释器。

# 查看可用版本
uv python list

# 安装多个Python版本
uv python install 3.10 3.11 3.12

# 为项目指定Python版本
uv python pin 3.11

# 用不同版本测试
uv run --python 3.10 pytest
uv run --python 3.12 pytest

🔧 工具安装与运行篇

全局工具安装

UV可以像 pipx 一样全局安装Python命令行工具,每个工具都有独立的隔离环境,不会污染系统Python。

# 安装全局工具
uv tool install black ruff jupyter
uv tool install black==23.12.0
uv tool install "ruff>=0.1.0,<0.2.0"

# 管理已安装工具
uv tool list
uv tool upgrade black
uv tool uninstall jupyter

使用 uvx:一键运行无需安装

uvx 是UV最强大的特性之一。它允许您直接运行任何Python工具,无需预先安装。UV会在后台自动创建一个临时隔离环境,安装并运行工具,然后清理环境。这类似于 npx 在JavaScript生态中的作用。




    
# 直接运行工具(无需安装)
uvx black .                   # 格式化当前目录
uvx ruff check .              # 运行代码检查
uvx pytest                    # 运行测试
uvx python -m http.server 8080  # 运行Python模块

# 一次性运行特定版本的工具
uvx "black==23.12.0" .
uvx "ruff@0.1.6" check .

# 运行GitHub仓库中的脚本
uvx "git+https://github.com/astral-sh/ruff" check .

「uvx的典型使用场景:」

  • 临时使用某工具,不想永久安装
  • 在不同项目中使用不同版本的工具
  • 快速验证某工具的功能
  • 运行一次性脚本或任务

「uvx vs uv tool run:」

  • uvx 更简洁,是 uv tool run 的快捷方式
  • uv tool run 需要工具已通过 uv tool install 安装
  • uvx 可以运行任何未安装的工具,更加灵活

实战操作

🆕 新项目快速启动

这是一条从零开始创建并配置一个Python项目的完整命令流。

# 1. 创建项目
uv init web-scraper
cd web-scraper

# 2. 添加依赖
uv add requests beautifulsoup4 pandas

# 3. 添加开发工具
uv add pytest black ruff --dev

# 4. 开始编码
uv run python main.py

👥 团队协作

在团队协作中,UV的锁文件(uv.lock)能确保所有成员拥有完全一致的依赖环境。

# 队友拉取代码后一键安装
git clone project-repo
cd project-repo
uv sync  # 根据uv.lock完全复现环境

# 更新依赖后通知队友
uv add new-package
git add uv.lock pyproject.toml
git commit -m "Add new-package dependency"

🚢 部署准备

UV提供命令帮助您将项目导出为传统格式、构建分发包或发布到PyPI。

# 生成requirements.txt给Docker用
uv export --format requirements-txt > requirements.txt

# 构建发布包
uv build

# 发布到PyPI
uv publish

从其他工具迁移

从pip + venv迁移

如果您有一个使用 requirements.txt 的传统项目,迁移到UV非常容易。

# 有requirements.txt的项目
uv init
uv add -r requirements.txt
# 完成!🎉

从Poetry迁移

UV的设计兼容 pyproject.toml,因此从Poetry迁移通常无需任何额外操作。

# Poetry项目直接兼容
uv sync  # 自动识别pyproject.toml
# 就这么简单!✨

从Pipenv迁移

从Pipenv迁移需要先导出依赖列表,然后用UV重新安装。

# 导出现有依赖
pipenv requirements > requirements.txt
uv init
uv add -r requirements.txt
rm Pipfile Pipfile.lock  # 清理旧文件

🆘 遇到问题?秒速解决!

常见问题速查

以下是一些常用的诊断和修复命令,可以帮助您快速解决常见问题。

# 清理缓存
uv cache clean

# 重建环境
rm -rf .venv && uv sync

# 查看依赖树
uv tree

#  详细日志调试
uv sync --verbose

# 检查配置
uv --version

救命技巧

当遇到依赖冲突或环境不一致的棘手问题时,可以尝试以下命令进行高级修复。

# 依赖冲突解决
uv lock --resolution lowest-direct

# 验证环境一致性
uv lock --check

# 强制重新解析
uv lock --upgrade


UV 是新一代 Python 项目管理工具,用 Rust 编写,速度极快。实现了包管理、依赖管理、项目管理、工具管理、团队协作、python版本管理的一个全面的工具链,能 10-100 倍加速依赖安装。大幅提升 Python 开发体验和效率。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/191852