Python 套件管理器 uv 使用介绍
写在前面
Python 生态得益于大数据时代和大模型时代蓬勃发展,相应的包管理工具也不断涌现,这篇文章简单记录一下个人上手 Astral 团队开发的 uv 的一些基操和使用一段时间后的体验。当然其实官方文档1已经很详细了。
如有错误,欢迎指正!
1. What’s uv?
An extremely fast Python package manager. —— 开发者原话
- 一款现代化的 Python 包管理暨打包(packing)工具;
- 高性能,安装依赖速度比传统工具提升几十倍(得益于 Rust);
- 一大特色,或者说最大优点是对 Python 版本的管理,不必再搭配
pyenv等工具; - 跨平台支持,适用多种开发环境
- 热 Cache 机制设计,二次构建快
2. Why uv ?
下表转载自 Shoukai Huang 大佬的博客2 整理的横向对比:
| 功能特性 | UV | pip+virtualenv | Conda | Poetry |
|---|---|---|---|---|
| 实现语言 | Rust | Python | Python | Python |
| 速度 | 比pip快10-100倍 | 基准线 | 慢于pip | 快于pip |
| 内存使用 | 非常高效 | 较高 | 高 | 中等 |
| 环境管理 | 内置 | 需要单独工具 | 内置 | 内置 |
| 依赖解析 | 快速、现代解析器 | 基础 | 全面 | 现代解析器 |
| 非Python包支持 | 否 | 否 | 是 | 否 |
| 锁文件 | 是 | 否(基本requirements.txt) | 是 | 是 |
| 项目结构化 | 是 | 否 | 否 | 是 |
| 包发布 | 是 | 是(需要twine) | 是 | 是 |
| 兼容性 | 与现有pip生态系统兼容 | 标准Python工具 | 自有生态系统 | 更固执己见的方法 |
| 错误处理 | 清晰的错误信息 | 基本 | 良好 | 良好 |
| 资源占用 | 最小 | 中等 | 重 | 中等 |
| 科学计算焦点 | 否 | 否 | 是 | 否 |
| 跨平台一致性 | 是 | 有限 | 优秀 | 良好 |
总而言之:
- uv vs. pip + virtualenv
- 快,跨环境
- uv vs. Conda
- 太臃肿了 Conda 我说,而且环境一多比较慢
- uv vs. Poetry
- 常用指令少且简洁,相比之下 Poetry 的学习成本就有点偏高了
- 内建了对 Python 的版本管理功能
- 兼容 pip, pip-tools
- uv vs. pyenv
- 并非竞品,pyenv 只是用于管理多个 Python 版本的工具(一般是 Poetry + pyenv 组合),与 uv 的不同是以源码编译的方式安装 Python
如果你还在使用 pip,那我觉得针对大型项目,亦或是中小型项目,不妨跳出舒适圈,试试更舒适(纯主观)的 uv 吧?
3. How to use uv?
3.1 Installation
以下内容在 macOS 系统上进行。
# On macOS and Linux.curl -LsSf https://astral.sh/uv/install.sh | sh# or use Homebrew on macOSbrew install uv使用 Python 的第三方库 pypi 安装当然也没问题:
pip install uv# Or pipx.pipx install uv如需更新:
uv self update
3.2 Use
常用指令:

以搭建一个 Python 项目环境为例:
-
uv python install安装 Python (系统已安装跳过即可); -
uv python list查看已安装的 Python 版本;

uv init在新项目的根目录下执行,初始化新项目;
可以观察到其贴心的给你生成了以下文件,并自动使用 git 进行版本管理:
.├── .git├── .gitignore├── .python-version├── main.py├── pyproject.toml└── README.md- 创建虚拟环境;
你可以直接 uv run main.py 执行示例文件,uv 会自动为你创建虚拟环境:

通过 uv venv --python=3.10 手动创建并指定版本当然也没问题,然后激活 source .venv/bin/activate 一下。
- 安装依赖;
直接看下文的速查表吧。
3.3 速查表
3.3.1 环境管理
| 操作 | UV 命令 |
|---|---|
| 创建虚拟环境 | uv venv |
| 创建指定 Python 版本的虚拟环境 | uv venv --python=3.12 |
| 激活虚拟环境 | source .venv/bin/activate |
3.3.2 包管理
| 操作 | UV 命令 |
|---|---|
| 安装单个包 | uv pip install pandas |
| 从 requirements.txt 安装 | uv pip install -r requirements.txt |
| 安装当前项目 | uv pip install -e . |
| 安装开发依赖 | uv pip install -e ".[dev]" |
| 生成锁文件 | uv pip compile requirements.in -o requirements.txt |
| 升级单个包 | uv pip install --upgrade pandas |
3.3.3 项目管理
| 操作 | UV 命令 |
|---|---|
| 添加依赖 | uv add pandas |
| 移除依赖 | uv remove pandas |
| 同步环境 | uv sync |
| 升级特定包 | uv sync --upgrade-package pandas |
| 升级所有包 | uv lock --upgrade |
| 运行脚本 | uv run python main.py |
| 构建项目 | uv build |
| 查看项目依赖关系树 | uv tree |
其中,管理依赖可以通过 group 参数来区分开发和生产环境,例如:
uv add --group dev pandasuv add --group production requests3.3.4 工具管理
uvx,即 uv tool run 的简写,顾名思义是用于调用 Python 工具,是 pipx 的替代品。
4. 参考资料
Footnotes
-
uv 官方文档, https://docs.astral.sh/uv/ ↩
-
UV:下一代Python包管理工具的全面指南, https://apframework.com/blog/essay/2025-06-07-Python-UV ↩
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!



