高性能 Python 包管理器 uv 的安装与使用

目录
[隐藏]

1 什么是 uv?

uv 是 Astral 公司推出的一款基于 Rust 编写的 Python 包管理工具,旨在成为“Python 的 Cargo”。它提供了快速、可靠且易用的包管理体验,在性能、兼容性和功能上都有出色表现,为 Python 项目的开发和管理带来了新的选择。

uv 的主要优势在于其速度快和功能全面。得益于 Rust 的性能优势,uv 在安装依赖等方面的速度远超其他工具。同时,uv 提供了一站式的服务,从安装 Python、管理虚拟环境,到安装和管理包,再到管理项目依赖,都能处理得很好。

2 安装 uv

在 macOS、Linux 和 Windows 上,可以通过以下方式安装 uv:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 在 macOS 和 Linux 上安装 uv
curl -LsSf https://astral.sh/uv/install.sh | sh
 
# 在 Windows 上:使用 Astral.sh 提供的安装脚本
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
 
# 在 Windows 上:使用 scoop 安装 uv
scoop install uv
 
# 通过 pip 安装:
pip install uv
 
# 验证安装是否成功
uv --help

3 uv 基础使用

uv 具有与 npm、yarn、cargo 类似的使用体验,其效果与 Node.js 的 npm 以及 Rust 中的 cargo 非常相似,主要通过 pyproject.tomluv.lock 两个文件实现对项目的包依赖管理。

  • pyproject.toml:类似于 Node.js 项目中的 package.json 文件,用于定义项目包依赖。
  • uv.lock:类似于 Node.js 项目中的 package-lock.jsonyarn.lock 文件,用于锁定依赖版本。

使用 uv 初始化创建一个新项目:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 这将创建一个包含默认文件和目录结构的项目。
# 项目结构通常包括 .venv(虚拟环境目录)、.python-version(指定 Python 版本的文件)、README.md(项目说明文件)、main.py(项目主文件)和 pyproject.toml(项目配置文件)等。
uv init myproject
 
cd myproject
 
# 添加依赖
uv add requests
 
# 同步项目依赖
uv sync
 
# 运行项目
uv run ./hello.py

uv 常用命令示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 安装单个包
uv add requests
 
# 指定版本安装
uv add "numpy==1.23.4"
 
# 从 requirements.txt 安装依赖
uv pip install -r requirements.txt
 
# 卸载包
uv remove numpy
 
# 检查 uv.lock 是否与 pyproject.toml 一致
uv lock --check
 
# 升级指定包
uv lock --P pandas
 
# 升级所有依赖包版本
uv lock -U
 
# 运行项目:
uv run main.py
 
# 打包项目,生成 Wheel 和源码分发包
uv build
 
# 导出 requirements.txt
uv export > requirements.txt
 
# 查看已安装包
uv pip list

实战技巧与建议:

  • 并行安装:uv 默认开启多线程下载,可通过 uv install --jobs=4 自定义线程数。
  • 加速私有仓库依赖:默认使用 pip 配置源,也支持通过配置 UV_INDEX 环境变量指向自定义源。
  • 避免全局污染:使用 --prefix 参数将依赖安装到项目目录。
  • 兼容旧项目:可直接替换 pip installuv install 进行迁移。
  • 性能测试对比:在大型项目(如包含数百个依赖)中,uv 安装速度可提升 3-5倍。

4 uv 与 pip/conda/virtualenv

特性 uv pip conda virtualenv
安装速度 ✅ 多线程并行 ❌ 串行安装 ✅ 并行 ❌ 串行
环境隔离 ❌ 默认不隔离 ❌ 需配合 venv ✅ 完整环境 ✅ 仅依赖隔离
生态支持 ✅ pip 兼容 ✅ 主流 ✅ 跨语言 ✅ 仅 Python
资源占用 ✅ 极轻量 ❌ 依赖系统包管理器 ❌ 较重 ✅ 轻量
适用场景 快速开发、轻量项目 通用场景 科学计算、复杂环境 多项目隔离

总结:

  • uv 适合追求极致速度与简洁体验的开发者,尤其适合频繁安装依赖或资源受限环境。
  • pip 作为官方工具生态完善,但性能与隔离性较弱。
  • conda 适合管理跨语言依赖与科学计算环境。
  • virtualenv 专注环境隔离,但需额外配置。

5 扩展参考

uv 作为新一代包管理器,正在用“简单即高效”的理念重塑 Python 开发体验。无论是追求速度的全栈开发者,还是资源受限的嵌入式场景,它都值得一试。✨

点赞 (2)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Captcha Code