体验一下刚上线的 cloude 4.0
什么是 uv?
uv 是一个由 Astral 团队开发的现代化 Python 包管理工具,使用 Rust 编写,旨在成为 pip、pip-tools、pipx、poetry、pyenv、twine、virtualenv 等工具的一站式替代方案。它的设计目标是提供极快的性能、简洁的用户体验,以及与现有 Python 生态系统的完美兼容性。
为什么选择 uv?
🚀 极致性能
- 10-100倍 比 pip 和 pip-tools 更快的依赖解析速度
- 使用 Rust 编写,天然的高性能优势
- 并行下载和安装,充分利用系统资源
🎯 简单易用
- 一个工具解决所有 Python 包管理需求
- 与现有工具兼容,无需修改现有工作流
- 直观的命令行界面
🔧 功能完整
- 包安装和管理
- 虚拟环境创建和管理
- 项目依赖管理
- Python 版本管理
- 包发布功能
安装 uv
macOS 和 Linux
1
| curl -LsSf https://astral.sh/uv/install.sh | sh
|
Windows
1
| powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
|
使用 pip 安装
使用 Homebrew (macOS)
基本使用
创建和管理虚拟环境
1 2 3 4 5 6 7 8 9 10 11
| uv venv
source .venv/bin/activate
.venv\Scripts\activate
uv venv --python 3.11
|
安装包
1 2 3 4 5 6 7 8 9 10 11
| uv pip install requests
uv pip install -r requirements.txt
uv pip install -r requirements-dev.txt
uv pip sync requirements.txt
|
项目管理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| uv init my-project cd my-project
uv add requests uv add pytest --dev
uv remove requests
uv run script.py
uv run pytest
|
高级功能
Python 版本管理
1 2 3 4 5 6 7 8
| uv python list
uv python install 3.11
uv init --python 3.11 my-project
|
依赖锁定
uv 自动生成 uv.lock
文件,确保跨环境的依赖一致性:
全局工具安装
1 2 3 4 5 6 7 8 9 10
| uv tool install black uv tool install ruff
uv tool run black . uv tool run ruff check .
uv tool list
|
性能对比
根据官方基准测试,uv 在各种场景下都显著优于传统工具:
操作 |
pip |
uv |
性能提升 |
安装 Django |
1.5s |
0.1s |
15x |
解析依赖 |
10s |
0.5s |
20x |
创建虚拟环境 |
2s |
0.1s |
20x |
迁移指南
如果你现在使用 pip 和 pip-tools:
1 2 3 4 5 6 7 8
| uv pip compile requirements.in
uv pip sync requirements.txt
uv pip install package-name
|
从 Poetry 迁移
1 2 3 4 5
| uv init --from-poetry
uv sync
|
从 Pipenv 迁移
1 2 3 4 5
| pipenv requirements > requirements.txt
uv pip install -r requirements.txt
|
配置和定制
配置文件
uv 支持多种配置方式:
1 2 3 4 5
| [tool.uv] index-url = "https://pypi.org/simple" extra-index-url = ["https://my-custom-index.com/simple"] trusted-host = ["my-custom-index.com"]
|
环境变量
1 2 3 4 5 6 7 8
| export UV_INDEX_URL="https://pypi.org/simple"
export UV_CACHE_DIR="/path/to/cache"
export UV_OFFLINE=1
|
与 CI/CD 集成
GitHub Actions
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| name: CI on: [push, pull_request]
jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install uv uses: astral-sh/setup-uv@v2 - name: Set up Python run: uv python install 3.11 - name: Install dependencies run: uv sync - name: Run tests run: uv run pytest
|
Docker
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| FROM python:3.11-slim
COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv
COPY . /app WORKDIR /app
RUN uv sync --frozen
CMD ["uv", "run", "python", "app.py"]
|
最佳实践
1. 使用项目模式
2. 锁定依赖版本
3. 分离开发和生产依赖
1 2 3 4 5 6
| uv add pytest --dev uv add black --dev
uv sync --no-dev
|
4. 使用工具管理
1 2 3 4
| uv tool install ruff uv tool install black uv tool install mypy
|
常见问题解答
Q: uv 与 pip 兼容吗?
A: 是的,uv 完全兼容 pip 的接口和 requirements.txt 格式。
Q: 可以在现有项目中使用 uv 吗?
A: 当然可以,uv 可以无缝替换现有的 pip 工作流。
Q: uv 支持私有仓库吗?
A: 支持,可以通过配置自定义索引 URL 来使用私有仓库。
Q: uv 的缓存在哪里?
A: 默认在 ~/.cache/uv
,可以通过环境变量 UV_CACHE_DIR
自定义。
总结
uv 代表了 Python 包管理工具的未来方向。它不仅提供了卓越的性能,还简化了 Python 开发者的日常工作流程。无论你是新手还是经验丰富的开发者,uv 都能帮你更高效地管理 Python 项目。
如果你还在使用传统的 pip 或其他包管理工具,强烈建议尝试 uv。它的速度和便利性会让你的开发体验焕然一新。
想了解更多 uv 的使用技巧?访问 官方文档 获取最新信息。