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.toml
和 uv.lock
两个文件实现对项目的包依赖管理。
pyproject.toml
:类似于 Node.js 项目中的package.json
文件,用于定义项目包依赖。uv.lock
:类似于 Node.js 项目中的package-lock.json
和yarn.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 install
为uv install
进行迁移。 - 性能测试对比:在大型项目(如包含数百个依赖)中,uv 安装速度可提升 3-5倍。
4 uv 与 pip/conda/virtualenv
特性 | uv | pip | conda | virtualenv |
---|---|---|---|---|
安装速度 | ✅ 多线程并行 | ❌ 串行安装 | ✅ 并行 | ❌ 串行 |
环境隔离 | ❌ 默认不隔离 | ❌ 需配合 venv | ✅ 完整环境 | ✅ 仅依赖隔离 |
生态支持 | ✅ pip 兼容 | ✅ 主流 | ✅ 跨语言 | ✅ 仅 Python |
资源占用 | ✅ 极轻量 | ❌ 依赖系统包管理器 | ❌ 较重 | ✅ 轻量 |
适用场景 | 快速开发、轻量项目 | 通用场景 | 科学计算、复杂环境 | 多项目隔离 |
总结:
uv
适合追求极致速度与简洁体验的开发者,尤其适合频繁安装依赖或资源受限环境。pip
作为官方工具生态完善,但性能与隔离性较弱。conda
适合管理跨语言依赖与科学计算环境。virtualenv
专注环境隔离,但需额外配置。
5 扩展参考
uv 作为新一代包管理器,正在用“简单即高效”的理念重塑 Python 开发体验。无论是追求速度的全栈开发者,还是资源受限的嵌入式场景,它都值得一试。✨