uv 是一个用 Rust 编写的、极其快速的 Python 包管理器和项目工作流工具。 它由创建了广受欢迎的 Python 代码格式化工具 Ruff 的 Astral 团队打造,旨在成为统一的、高性能的 Python 工具链入口。

你可以把它理解为:pipvenvpip-toolspoetrypytest 等诸多工具的超高速替代品,并且它们被集成在了一个命令行工具里。

uv 的核心定位

它的目标是解决 Python 开发中长期存在的几个痛点:

  • 工具链碎片化:项目可能同时使用 pipvenvpoetrypytest 等一堆工具,配置复杂。

  • 速度慢:尤其是 pip 在依赖解析和安装大型包时非常耗时。

  • 体验不一致:不同工具(如 pippoetry)的命令和工作流不同,需要额外学习。

uv 试图通过一个单一工具,提供从项目创建到依赖管理、测试运行的一致且极速的体验

主要特性与优势

1. 极致的速度

这是 uv 最引人注目的特点。由于其底层由 Rust 编写,并采用了先进的依赖解析算法和并行下载技术,它在几乎所有操作上都比传统工具快一个数量级。

  • 依赖解析:比 pippoetry 快 10-100 倍。

  • 包安装:利用全局缓存和并行化,安装速度极快。

  • 虚拟环境创建:几乎是瞬间完成。

2. 一体化的工具集

uv 用一个命令覆盖了开发工作流的多个环节:

  • 包管理 (uv pip):完全兼容 pip 命令,但速度更快。

  • 项目管理 (uv run, uv add):类似于 Poetry,可以通过 pyproject.toml 管理依赖和运行脚本。

  • 虚拟环境管理 (uv venv):快速创建和管理虚拟环境。

  • 锁文件生成 (uv lock):生成精确的、跨平台的依赖锁文件。

  • 运行脚本和工具 (uv run):可以直接运行 pytestblack 等工具,无需先激活虚拟环境。

3. 强大的兼容性

  • 与现有生态无缝对接uv 完全遵守 Python 的打包标准(如 pyproject.toml),可以很好地与现有的 pipsetuptools 项目协作。

  • 替换而非颠覆:你可以逐步采用 uv,比如先用 uv pip 代替 pip,然后再用其项目管理功能。

安装

使用pip按照uv:

pip install uv

命令结束后,使uv --version 测试是否安装成功

环境管理

安装和管理 Python 版本

uv 可以轻松管理多个 Python 版本,无需额外安装 pyenv 等工具。

查看已安装的 Python 版本

# 查看 uv 管理的 Python 版本
uv python list

安装特定 Python 版本

# 安装特定版本
uv python install 3.11.5

# 安装最新版本
uv python install 3.12

# 安装预览版
uv python install 3.13.0-alpha.1

移除 Python 版本

# 移除特定版本
uv python uninstall 3.11.5

管理虚拟环境

基本创建

# 在当前目录创建 .venv 虚拟环境
uv venv

# 指定名称创建虚拟环境
uv venv myenv

# 指定路径创建虚拟环境
uv venv /path/to/venv

指定 Python 版本

# 使用特定 Python 版本创建
uv venv --python 3.11

# 使用精确版本
uv venv --python 3.11.5

# 使用系统 Python
uv venv --python system

使用虚拟环境

当你在项目目录中使用 uv run 时,如果不存在虚拟环境,uv 会自动创建 .venv

# 运行 Python 脚本
uv run python script.py

# 运行测试
uv run pytest

# 运行任何命令
uv run black .
uv run flask run

指定环境路径

# 使用特定虚拟环境运行命令
uv --with-venv /path/to/venv run python script.py

项目管理

初始化项目

使用如下创建一个新的 Python 项目

uv init my-project
cd my-project

或者在现有python项目中使用uv初始化项目,此时项目中会添加pyproject.toml .python-version 文件。这些文件是uv所需要的管理依赖的文件

cd my-project
uv init

项目迁移

在项目迁移到其他环境时,不可避免得需要安装该项目所需要的包

如果项目只有requirements.txt文件时,可以使用如下命令添加依赖包

uv pip install -r requirements.txt

对于已经有pyproject.toml 文件的项目,使用如下命令安装项目的依赖包

uv sync

当你在项目目录中使用 uv sync 时,如果不存在虚拟环境,uv 会自动创建 .venv 。如果不想要创.venv ,则可以使用如下命令安装依赖包

uv install

包管理

添加一个或多个依赖

# 添加一个包
uv add pandas
# 添加多个包(用空格隔开)
uv add requests pandas

添加特定版本的依赖

# 添加精确版本
uv add package==1.2.3

# 添加兼容版本
uv add package>=1.2.0
uv add package<=2.0.0
uv add package>1.0.0,<2.0.0

列举当前环境的包

uv pip list

移除当前环境的包

uv remove pandas

uv remove会同时移pyproject.toml文件中的依赖声明和环境中的包

更新当前环境的包

可以首先查看有哪些包可以升级

uv pip list --outdated

然后升级所需要的包

uv pip install --upgrade requests flask

pip 写法

uv也可以用pip写法,纯粹作为更快的pip使用

uv pip install numpy
uv pip uninstall numpy

高级用法

强制重新安装

# 强制重新安装包(先卸载再安装)
uv pip install --force-reinstall package-name

升级 pip 本身

# 升级 uv 的 pip 组件
uv pip install --upgrade pip

忽略已安装的包

# 忽略已安装的包,强制重新安装
uv pip install --ignore-installed package-name

文章作者: Vsoapmac
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 soap的会员制餐厅
python 第三方库
喜欢就支持一下吧