uv打包工具介绍
uv是由Astral(Rust 编写的 Ruff 代码检查工具团队)开发的极速 Python 包与项目管理器,用 Rust 写成,旨在替代pip、pip-tools、virtualenv、poetry等工具,统一管理 Python 项目中的依赖、虚拟环境和 Python 版本。
核心功能一览
| 功能 | 对应传统工具 | 说明 |
|---|---|---|
uv venv | virtualenv/python -m venv | 创建虚拟环境(速度极快) |
uv pip install | pip install | 安装依赖(兼容 pip 命令) |
uv pip compile | pip-compile | 生成精确的锁文件(requirements.txt) |
uv pip sync | pip-sync | 将环境同步为锁文件状态 |
uv run | 手动激活环境 + 运行脚本 | 自动检测/创建环境并执行命令 |
uv init/uv add/uv remove/uv lock | poetry/pipenv | 项目管理(pyproject.toml) |
uv python install/list/find | pyenv | 管理 Python 解释器版本 |
为什么选择 uv?
快到惊人
用 Rust 实现,并行下载、解析和安装,安装速度常比 pip 快 10–100 倍(尤其依赖解析阶段)。
全局缓存机制,重复依赖几乎瞬间完成。
完全兼容 PyPI 和 pip 工作流
支持requirements.txt、pyproject.toml,可以直接替代 pip 命令(如uv pip install torch)。一体化项目管理
用uv init创建项目,uv add添加依赖,自动生成pyproject.toml和uv.lock,锁定所有依赖版本。零配置 Python 管理
可下载安装任意 CPython 版本(甚至 PyPy),项目可指定所需 Python 版本,uv run自动处理。跨平台,单文件分发
无需 Python 或 Rust 预装,下载即用。
安装 uv
Linux / macOS:
bash
curl -LsSf https://astral.sh/uv/install.sh | sh
Windows (PowerShell):
powershell
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
或使用 pip:
bash
pip install uv
安装后验证:
bash
uv --version
常用命令速查
1. 虚拟环境
bash
# 创建虚拟环境(默认 .venv 目录) uv venv # 指定 Python 版本创建 uv venv --python 3.12
2. 依赖安装(pip 风格)
bash
# 安装单个包 uv pip install requests # 从 requirements.txt 安装 uv pip install -r requirements.txt # 生成锁定文件 uv pip compile pyproject.toml -o requirements.txt # 根据锁定文件同步环境(移除多余包) uv pip sync requirements.txt
3. 项目管理(poetry 风格)
bash
# 初始化新项目 uv init my-project cd my-project # 添加依赖 uv add fastapi uvicorn # 添加开发依赖 uv add --dev pytest black # 移除依赖 uv remove requests # 锁定当前依赖 uv lock # 从锁文件同步安装 uv sync
4. 运行脚本(自动管理环境)
bash
# 在项目环境中直接运行脚本(无需手动激活 venv) uv run python main.py # 运行一次性命令 uv run --with flask python -c "import flask; print(flask.__version__)"
5. Python 版本管理
bash
# 列出可安装的 Python 版本 uv python list # 安装特定版本 uv python install 3.12 # 查看已安装版本 uv python list --only-installed
假设你要用本地 Ollama 开发一个 API 服务,用uv管理项目:
bash
# 创建项目 uv init ollama-api cd ollama-api # 添加依赖 uv add openai
此后任何人克隆项目后只需uv sync即可复现完全相同的环境。
uv vs 传统工具对比
| 特性 | uv | pip + venv | Poetry | pip-tools |
|---|---|---|---|---|
| 速度 | ⚡️ 极快 | 🐢 慢 | 🐇 快 | 🐇 较快 |
| 锁文件 | ✅ uv.lock | ❌ | ✅ poetry.lock | ✅ requirements.txt |
| 虚拟环境自动管理 | ✅ | ❌ | ✅ | ❌ |
| 项目管理 | ✅ | ❌ | ✅ | ❌ |
| Python 版本管理 | ✅ | ❌ | ❌ | ❌ |
| 与 pip 命令兼容 | ✅ | ✅ | ❌ | ✅ |
💡 总结
uv把pip的速度问题、venv的繁琐激活、pyenv的版本管理、poetry的项目管理集于一身,是当前 Python 生态里最令人兴奋的工具之一。无论你是个人开发还是团队协作,都可以用uv获得丝滑、极速的依赖管理体验。
