告别 pip:使用 uv 加速你的 Python 包管理
使用 uv:更快的 Python 包管理工具
随着 Python 生态的演进,包管理工具也在不断升级迭代。uv 是 Astral(同样维护 ruff 的团队)推出的下一代 Python 包与项目管理器,主打 单一可执行文件、极致性能,可在多数场景下取代 pip、pip-tools、pipx 与 virtualenv 等传统工具,并原生支持创建与管理虚拟环境。
安装 uv
macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
安装脚本会将可执行文件放到 ~/.local/bin(或等效目录),请确认该路径已加入 PATH。
Windows
irm https://astral.sh/uv/install.ps1 | iex
验证安装
uv --version
常用命令速查
提示
*项目内 如果已通过
uv init创建项目并生成pyproject.toml/uv.lock,推荐使用uv add / uv remove / uv sync。
*脚本或一次性环境 则直接采用uv pip …(与pip参数保持一致)。
| 场景 | 命令 |
|---|---|
| 安装包(pip 接口) | uv pip install requests (Astral Docs) |
| 卸载包 | uv pip uninstall requests (Astral Docs) |
| 添加依赖到项目 | uv add requests (Astral Docs) |
| 移除依赖 | uv remove requests (Astral Docs) |
| 同步依赖 / 锁文件 | uv sync(项目) 或 uv pip sync -r requirements.txt(任意环境) (Astral Docs) |
| 创建虚拟环境 | uv venv .venvuv venv -p 3.10 .venv (Astral Docs) |
运行脚本(替代 pipx run) | uv run script.py(亦支持 URL) (Astral Docs) |
| 更新 uv 本身 | uv self update |
无需
source .venv/bin/activate!
uv会自动在当前或父级目录搜索并使用.venv,因此日常开发可直接运行uv run/uv pip …。
常见命令详解与用法
uv add vs uv pip install 的区别
-
uv add requests:不仅安装包,还会自动将其添加到项目的依赖文件中。如果项目根目录没有 requirements.txt,会自动创建一个。适合项目开发中使用。 -
uv pip install requests:仅安装包,不更新任何依赖文件。与传统 pip 命令兼容,适合临时使用或快速测试。
导出已安装包到 requirements.txt
# 如果项目已配置 pyproject.toml
uv export > requirements.txt# 如果未配置 pyproject.toml
uv pip freeze > requirements.txt
注意:uv export 依赖于 pyproject.toml 配置,没有此文件时会报错。
使用 uv init 初始化项目
uv init
这个交互式命令会询问基本项目信息,自动生成 pyproject.toml 文件,是小白用户快速入门的最佳选择。生成后,即可使用 uv add 等项目管理命令。
pyproject.toml:现代 Python 项目标准
pyproject.toml 是现代 Python 项目的核心配置文件,用于统一管理:
- 项目元数据(名称、版本、描述)
- 依赖管理(运行时和开发依赖)
- 构建系统配置
- 开发工具设置(linter、formatter)
使用 pyproject.toml 的主要优势是环境一致性和快速配置,让新人加入项目时只需一条命令即可完全重现开发环境。
性能与特性
- 速度:官方基准测试显示,在解析和安装依赖时相较
pip可提速 10–100×(取决于冷/热缓存与依赖复杂度)。(Astral Docs) - PEP 517/518 完整支持,能构建任意现代 Python 项目。
- 内置 Python 版本管理:
uv python install 3.12可按需下载独立 Python 发行版,不再依赖系统解释器。(Astral Docs) - 单文件分发:Rust 实现、零运行时依赖,CI/CD 与容器镜像集成简单。
- 丰富子命令:
uv tool管理 CLI 工具,uv lock生成可复现锁文件,uv run支持一次性脚本依赖等。
