目录
[uv 的核心作用](#uv 的核心作用)
[1. 项目管理(日常开发最常用)](#1. 项目管理(日常开发最常用))
[2. 脚本与命令运行](#2. 脚本与命令运行)
[3. Python 解释器管理](#3. Python 解释器管理)
[4. 虚拟环境与缓存管理](#4. 虚拟环境与缓存管理)
[5. 兼容传统 pip 的命令](#5. 兼容传统 pip 的命令)
[6. 包构建与发布](#6. 包构建与发布)
是什么?
在 Python 开发中,uv 是一个用 Rust 编写的极速 Python 包和项目管理工具。它由开发了 Ruff 的 Astral 团队打造,旨在解决传统 Python 工具链(如 pip、virtualenv、pyenv、poetry)长期存在的安装速度慢、依赖冲突多、工具分散等痛点。
uv 的核心作用
uv 不仅仅是一个包管理器,它被设计为一个"一站式"的工具,能够覆盖 Python 开发的绝大部分流程。具体来说,它可以替代以下多个传统工具的功能:
- 替代 pip / pip-tools :提供与 pip 兼容的接口(如
uv pip install),但速度极快,同时支持更高级的依赖锁定(uv lock)和环境同步(uv sync)。 - 替代 virtualenv / venv :内置虚拟环境管理功能,能自动创建符合标准的
.venv环境,且无需手动激活即可运行代码(uv run)。 - 替代 pyenv :直接管理 Python 解释器版本,可以下载、安装和固定特定的 Python 版本(
uv python install/pin)。 - 替代 pipx :用于安装和管理全局命令行工具(CLI),例如使用
uv tool install或临时运行工具的uvx命令。 - 替代 Poetry / PDM :通过
uv init初始化项目,自动生成标准的pyproject.toml配置文件,并管理项目的生产与开发依赖。
为什么开发者经常使用它?
uv 在 Python 社区迅速走红并被广泛采用,主要归功于以下几个核心优势:
1. 极致的性能提升 这是 uv 最吸引人的特点。由于底层使用 Rust 编写,支持并行依赖解析、下载和安装,并且拥有全局缓存机制(避免重复下载),其安装包的速度通常比传统的 pip 快 10 到 100 倍。原本需要几分钟的安装过程,现在往往只需几秒钟即可完成。
2. 统一的工作流,降低复杂度 Python 生态系统长期以来存在"工具碎片化"的问题,开发者需要记忆和维护多种不同工具的配置与命令。uv 将这些零散的工具整合到一个统一的命令体系中,大幅降低了学习成本和环境维护的负担。
3. 优秀的兼容性 uv 并没有试图创造一套全新的封闭生态,而是完美兼容现有的标准。它支持标准的 pyproject.toml (PEP 621)、requirements.txt 文件以及标准的虚拟环境结构。这意味着你可以轻松地将现有项目迁移到 uv,或者将其无缝集成到 VS Code、PyCharm 等主流 IDE 中。
4. 简化的操作体验 uv 的设计理念是尽量让常见操作不需要额外配置。例如,当你使用 uv run script.py 运行脚本时,它会自动检查并创建虚拟环境、同步依赖,开发者完全无需手动执行繁琐的 source venv/bin/activate 激活步骤,极大地提升了日常开发的顺滑度。
只需要记住,他是一个包管理器就可以
有什么命令使用
uv 的命令设计非常符合直觉,基本涵盖了 Python 项目从创建、开发到发布的全生命周期。为了让你更直观地掌握,我将这些命令按核心使用场景进行了分类整理:
1. 项目管理(日常开发最常用)
这是 uv 最核心的工作流,覆盖了一个项目从诞生到运行的全过程:
uv init [项目名]:初始化一个新项目。会自动生成标准的目录结构,包括pyproject.toml(项目配置)、.gitignore和.python-version等文件。uv add <包名>:向项目中添加依赖。不仅会安装包,还会自动将依赖写入pyproject.toml并更新锁文件(例如:uv add requests或uv add --dev pytest添加开发依赖)。uv remove <包名>:从项目中移除指定的依赖包,并同步更新配置文件。uv sync:根据pyproject.toml和锁文件(uv.lock),将所有依赖安装或同步到当前的虚拟环境中。常用于团队协作拉取代码后的一键环境搭建。uv lock:手动解析依赖并生成/更新uv.lock锁定文件,确保所有团队成员安装的依赖版本完全一致。
2. 脚本与命令运行
uv run <命令/脚本>:在项目的虚拟环境中执行命令或脚本。它会自动检测并关联虚拟环境,开发者无需手动激活 (如source activate)即可直接运行,极大简化了流程。uvx <工具名>:临时下载并运行一个由 Python 包提供的命令行工具(类似 Node.js 的npx)。工具运行结束后会自动清理,非常适合偶尔使用的工具。
3. Python 解释器管理
内置了强大的 Python 版本管理器,彻底告别 pyenv:
uv python install <版本>:自动下载并安装指定版本的 Python(如uv python install 3.12)。uv python list:列出当前系统中可用以及已安装的 Python 版本。uv python pin <版本>:为当前项目固定特定的 Python 版本,会在根目录生成.python-version文件,保证团队环境统一。uv python uninstall <版本>:卸载本地安装的某个 Python 版本。
4. 虚拟环境与缓存管理
uv venv:在当前目录下创建一个标准的虚拟环境(默认名为.venv),支持指定 Python 版本。uv cache clean:清理uv的全局缓存文件,释放磁盘空间。
5. 兼容传统 pip 的命令
如果你习惯了传统的 pip 操作,uv 提供了完全兼容的接口,只需在前面加上 uv 前缀,速度就能提升数十倍:
uv pip install -r requirements.txt:兼容原有的 requirements 文件进行批量安装。uv pip freeze > requirements.txt:导出当前环境的依赖列表。
6. 包构建与发布
当你需要将自己的代码打包分享给他人时可以使用:
uv build:将当前的 Python 项目构建为源代码分发包和 wheel 文件。uv publish:将构建好的分发包上传到 PyPI 等索引仓库。
💡 总结建议: 对于刚开始使用 uv 的开发者,你只需要记住最核心的"四步走"工作流即可应对 90% 的日常需求:uv init (建项目)→ uv add (装依赖)→ uv sync (同步环境)→ uv run(跑代码)。