使用uv进行Python项目管理
什么是 uv?
uv 是一款用 Rust 编写的高速 Python 包管理器和解析器,由 Astral 团队开发(也是 Ruff 的创建者)。它集成了 pip、pip-tools、pipenv、poetry 和 pyenv 等工具的功能,旨在提供极致的速度和可靠性,成为现代 Python 开发的终极工具链。
安装 uv
在 Linux 和 macOS 上安装
使用 curl 安装:
curl -LsSf https://astral.sh/uv/install.sh | sh
安装后重启终端或运行:
source $HOME/.cargo/env
在 Windows 上安装
使用 PowerShell:
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
使用 pip 安装(已安装 Python 的情况下)
pip install uv
验证安装
uv --version
基本使用方法
1. 创建虚拟环境
uv 可以快速创建虚拟环境:
# 在当前目录创建虚拟环境uv venv# 指定 Python 版本创建虚拟环境uv venv --python 3.11# 创建指定名称的虚拟环境uv venv myenv
2. 激活虚拟环境
不同系统的激活方式:
Linux/macOS:
source .venv/bin/activate
Windows:
.venv\Scripts\activate
使用 uv 直接运行(无需激活):
uv run python script.py
3. 安装包
# 安装单个包uv add requests# 安装特定版本uv add "flask==2.3.0"# 安装开发依赖uv add --dev pytest# 从 requirements.txt 安装uv pip install -r requirements.txt# 安装当前项目(可编辑模式)uv add -e .
4. 管理依赖
创建 pyproject.toml 文件:
uv init
添加依赖到项目:
# 添加生产依赖uv add pandas numpy# 添加开发依赖uv add --dev black mypy# 移除依赖uv remove requests
生成 requirements.txt:
uv pip compile pyproject.toml -o requirements.txt
5. 同步依赖
确保虚拟环境与依赖文件一致:
uv sync
高级功能
1. 快速运行脚本
无需激活环境直接运行:
uv run python myscript.pyuv run pytest tests/uv run black src/
2. 跨平台依赖解析
uv 使用全局依赖缓存,大大加速重复安装:
# 查看缓存位置uv cache dir# 清理缓存uv cache clean
3. 使用不同 Python 版本
# 查看可用 Python 版本uv python list# 安装特定 Python 版本uv python install 3.12# 使用特定版本创建环境uv venv --python 3.12
4. 锁定依赖版本
生成锁文件确保一致性:
uv lock
这会在 pyproject.toml 旁生成 uv.lock 文件。
5. 与现有项目集成
迁移现有项目到 uv:
# 从 requirements.txt 创建 pyproject.tomluv pip compile requirements.in -o pyproject.toml# 或从现有环境导出uv pip freeze > requirements.txt
项目工作流示例
创建新项目
# 创建项目目录mkdir myproject && cd myproject# 初始化项目uv init# 添加依赖uv add fastapiuv add --dev pytest# 创建虚拟环境uv venv# 激活环境并工作source .venv/bin/activate
协作项目设置
# 克隆项目git clone project-urlcd project# 安装所有依赖(包括开发依赖)uv sync --dev# 运行测试uv run pytest# 添加新依赖uv add new-dependencyuv lock # 更新锁文件
性能优化技巧
与其它工具对比
- • 相比 pip:uv 快 10-100 倍,有更好的依赖解析
常见问题解决
1. 代理设置
export UV_HTTP_TIMEOUT=30export UV_PROXY=http://proxy.example.com:8080
2. 空间清理
# 清理所有缓存uv cache clean --all# 只清理包缓存uv cache clean --packages
3. 依赖冲突解决
# 详细依赖树查看uv tree# 尝试不同的解析策略uv sync --resolution=highest
集成到 CI/CD 流程
在 GitHub Actions 中使用 uv:
jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: astral-sh/setup-uv@v1 - run: uv sync --dev - run: uv run pytest
总结
uv 凭借其卓越的性能和现代化的设计,正在成为 Python 生态系统中的游戏规则改变者。它通过:
- 1. 极致的速度:Rust 编写,并行处理,全局缓存
无论你是个人开发者还是团队协作,uv 都能显著提升 Python 项目的工作效率。开始使用 uv,体验下一代 Python 包管理的速度和便利吧!
注意:uv 仍在积极开发中,建议定期更新以获得最新功能和改进:
uv self update