1. uv新一代的包管理工具
1.0 官网地址
- https://docs.astral.sh/uv/#tools
- https://github.com/astral-sh/uv
1.1 如何安装
# On Windows.--> 这里有时需要开启脚本运行: Set-ExecutionPolicy RemoteSigned -scope CurrentUser
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
# On macOS and Linux.
curl -LsSf https://astral.sh/uv/install.sh | sh
# With pip. 不推荐
pip install uv

2 基础命令
2.1 环境管理
# 1. 先初始化一个项目
uv init uv_example
# 2. 指定 Python 版本: 语法:`uv venv 环境名称 --python 版本` 推荐! 这样会创建一个test01的文件夹, 里面放着环境,可以安装多个版本,使用use进行切换python ==> uv python use 3.10
uv venv --python 3.11
# 3. 创建虚拟环境: 环境名称、版本可省略:`uv venv`
uv venv
# 4. 激活环境(Windows),,然后可以运行 python --version 看是否是我们指定的python版本,, 在 linux 需要加 source .venv\Scripts\activate
.venv\Scripts\activate
python --version
# 5. 查看uv安装依赖库, 可以查看这个toml文件,也可以使用: uv pip list ==> 或者更加详细一点的: uv pip freeze
uv add ruff
移除库
uv remove ruff
# 6. 可以uv运行py文件
uv run .\main.py

2.2 包管理
# 添加依赖(会更新 pyproject.toml)
uv add flask
uv add --dev pytest
# 安装依赖(不更新配置文件)
uv pip install flask
# 从项目配置安装
uv pip install .
2.3 依赖同步
# 同步项目依赖
uv sync
# 更新依赖
uv sync --upgrade
# 更新特定包
uv sync --upgrade-package flask
3. 项目最佳实践
3.1 新项目初始化
# 1. 创建项目目录
mkdir my-project && cd my-project
# 2. 创建虚拟环境
uv venv --python 3.11
# 3. 激活环境
.venv\Scripts\activate
# 4. 添加依赖
uv add flask fastapi
uv add --dev pytest black
# 5. 同步依赖
uv sync
3.2 配置文件示例
# pyproject.toml
[project]
name = "my-project"
version = "0.1.0"
description = "Project description"
requires-python = ">=3.11"
dependencies = [
"flask",
"fastapi"
]
[project.optional-dependencies]
dev = [
"pytest",
"black"
]
3.3 团队协作流程
3.3.1 克隆项目后:
uv venv
.venv\Scripts\activate
uv sync
3.3.2 添加新依赖时:
uv add new-package
uv sync # 更新锁文件
git add pyproject.toml uv.lock
3.3.3 CI/CD 环境:
uv sync --locked # 确保可重现的构建
4. UV vs pip 命令对比
功能 |
UV 命令 |
pip 命令 |
安装包 |
uv add flask |
pip install flask |
安装开发依赖 |
uv add --dev pytest |
pip install pytest |
从文件安装 |
uv sync |
pip install -r requirements.txt |
更新包 |
uv sync --upgrade |
pip install --upgrade |
5. 版本管理
5.1 通过配置文件
# pyproject.toml
[project]
requires-python = ">=3.9,<3.11"
5.2 5.2 通过命令行
# 创建特定版本环境
uv venv --python 3.9
# 使用 .python-version 文件
echo "3.9.7" > .python-version
6. 最佳实践总结
6.1 依赖管理:
- 使用 uv add 添加新依赖
- 使用 uv sync 同步项目依赖
- 总是提交 uv.lock 到版本控制
6.2 环境管理:
- 每个项目使用独立虚拟环境
- 明确指定 Python 版本要求
- 使用 --dev 分离开发依赖
6.3 团队协作:
- 统一使用
pyproject.toml
- 保持锁文件更新
- CI/CD 中使用
--locked
标志