uv:现代化的 Python 包和项目管理工具
文章目录
- 什么是 uv?
- 安装 uv
- 使用安装脚本(适用于 macOS 和 Linux)
- 使用 Homebrew(适用于 macOS)
- 使用 PowerShell(适用于 Windows)
- 使用 pip 安装
- 创建虚拟环境
- 激活和退出虚拟环境
- 管理依赖
- 添加依赖
- 移除依赖
- 同步依赖
- 升级依赖
- 运行脚本
- 管理 Python 版本
- 安装特定版本的 Python
- 查看已安装的 Python 版本
- 示例:快速创建并运行一个项目
在 Python 项目开发中,虚拟环境和依赖管理一直是开发者关注的重点。传统工具如 pip
、virtualenv
和 conda
虽然功能强大,但在速度、依赖冲突处理和多工具协作方面存在一定的局限性。为了解决这些问题,Astral 团队开发了一个全新的工具 —— uv。本文将介绍 uv 的基本操作,帮助你快速上手这一现代化的 Python 包和项目管理工具。
什么是 uv?
uv 是一个用 Rust 编写的高性能 Python 包和项目管理器,旨在替代传统的 pip
、virtualenv
、pip-tools
和 poetry
等工具。它的主要特点包括:
- 极致性能:依赖解析和安装速度比传统工具快 10–100 倍 。
- 内置虚拟环境管理:自动创建和管理虚拟环境,无需手动操作。
- 多 Python 版本支持:可安装和管理多个 Python 版本。
- 统一的依赖管理:通过
pyproject.toml
和uv.lock
文件实现可重复的环境配置。 - 兼容现有工具链:提供
uv pip
等命令,兼容现有的pip
工作流程。
安装 uv
可以通过多种方式安装 uv:
使用安装脚本(适用于 macOS 和 Linux)
curl -LsSf https://astral.sh/uv/install.sh | sh
使用 Homebrew(适用于 macOS)
brew install uv
使用 PowerShell(适用于 Windows)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
使用 pip 安装
pip install uv
安装完成后,可以通过以下命令验证安装:
uv --version
创建虚拟环境
uv 默认使用 .venv
目录作为虚拟环境的存储位置。你可以使用以下命令创建虚拟环境:
uv venv
如果需要指定虚拟环境的名称或路径,可以:
uv venv my_env
要使用特定版本的 Python 创建虚拟环境:
uv venv --python 3.11
如果指定的 Python 版本未安装,uv 会自动下载所需版本 。
激活和退出虚拟环境
激活虚拟环境:
- macOS 和 Linux:
source .venv/bin/activate
- Windows(PowerShell):
.venv\Scripts\Activate.ps1
退出虚拟环境:
deactivate
管理依赖
uv 提供了一套简洁的命令来管理项目依赖:
添加依赖
uv add requests
此命令会将 requests
添加到 pyproject.toml
文件中,并更新 uv.lock
文件,同时安装该依赖。
移除依赖
uv remove requests
此命令会从 pyproject.toml
和 uv.lock
中移除 requests
,并卸载该依赖。
同步依赖
uv sync
根据 pyproject.toml
和 uv.lock
文件,安装或更新项目所需的所有依赖。
升级依赖
升级单个依赖:
uv sync --upgrade-package requests
升级所有依赖:
uv lock --upgrade
运行脚本
uv 提供了 uv run
命令,用于在虚拟环境中运行脚本或命令:
uv run python main.py
此命令会自动激活虚拟环境,确保依赖已安装,然后运行 main.py
。
管理 Python 版本
uv 支持安装和管理多个 Python 版本:
安装特定版本的 Python
uv python install 3.12
查看已安装的 Python 版本
uv python list
uv 使用 Astral 的 python-build-standalone
项目提供的 Python 分发版本,确保兼容性和可重复性 。
示例:快速创建并运行一个项目
以下是使用 uv 创建并运行一个简单项目的示例流程:
# 初始化项目
uv init my_project
cd my_project# 添加依赖
uv add fastapi uvicorn# 运行应用
uv run uvicorn main:app --reload
在这个过程中,uv 会自动创建虚拟环境,安装依赖,并运行应用。
如需更深入的了解 uv 的使用,可以参考以下视频教程:
Python Tutorial: UV - A Faster, All-in-One Package Manager to Replace Pip and Venv