社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

程序员老朱 • 5 月前 • 523 次点击  

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