uv安装介绍

uv 安装、Python 版本管理、虚拟环境、依赖管理和 CI/CD 使用建议。

uv

uv 是一个高性能 Python 包管理和项目管理工具,可以替代部分 pippip-toolsvenvvirtualenvpoetrypyenv 的日常工作。它适合本地开发、CI/CD 构建、Python 脚本运行和多项目依赖管理。

适用场景

  • 快速创建 Python 虚拟环境。
  • 管理项目依赖和锁定文件。
  • 安装和切换 Python 版本。
  • 在 CI/CD 中复现一致的依赖环境。
  • 临时运行 Python 工具或脚本。
  • 替代 pip install 提升依赖安装速度。

安装 uv

macOS / Linux 可以使用官方安装脚本:

curl -LsSf https://astral.sh/uv/install.sh | sh

安装完成后重新加载 shell:

source ~/.zshrc

验证版本:

uv --version

如果使用 Homebrew:

brew install uv

如果已经有 Python 和 pip,也可以使用 pip 安装:

pip install uv

管理 Python 版本

查看可安装的 Python 版本:

uv python list

安装指定 Python 版本:

uv python install 3.12

查看已安装 Python:

uv python list --only-installed

在当前项目中指定 Python 版本:

uv python pin 3.12

这会在项目中生成 .python-version 文件,后续 uv 会优先使用该版本。

创建虚拟环境

在当前目录创建 .venv

uv venv

指定 Python 版本创建虚拟环境:

uv venv --python 3.12

激活虚拟环境:

source .venv/bin/activate

确认当前 Python:

which python
python --version

初始化项目

创建新项目:

uv init demo-service
cd demo-service

在已有目录初始化:

uv init

初始化后通常会生成:

pyproject.toml
README.md
main.py

管理依赖

添加运行依赖:

uv add requests
uv add fastapi uvicorn

添加开发依赖:

uv add --dev pytest ruff mypy

删除依赖:

uv remove requests

同步依赖环境:

uv sync

严格按锁文件同步,不允许自动更新锁文件:

uv sync --frozen

运行命令

在项目环境中运行 Python:

uv run python --version

运行脚本:

uv run python main.py

运行测试:

uv run pytest

运行格式化或检查工具:

uv run ruff check .
uv run ruff format .

临时运行一个未安装到项目里的工具:

uvx ruff check .
uvx httpie https://example.com

替代 pip 使用

安装包:

uv pip install requests

requirements.txt 安装:

uv pip install -r requirements.txt

导出当前环境:

uv pip freeze

CI/CD 使用建议

典型流水线步骤:

uv python install 3.12
uv sync --frozen
uv run pytest
uv run ruff check .

如果构建机网络不稳定,建议缓存以下目录:

~/.cache/uv
.venv

容器构建中可以先复制锁文件,提高依赖层缓存命中率:

COPY pyproject.toml uv.lock ./
RUN uv sync --frozen --no-dev

COPY . .

常用命令

命令说明
uv --version查看 uv 版本
uv init初始化 Python 项目
uv python install 3.12安装 Python 3.12
uv python pin 3.12固定项目 Python 版本
uv venv创建虚拟环境
uv add requests添加运行依赖
uv add --dev pytest添加开发依赖
uv remove requests删除依赖
uv sync同步项目环境
uv sync --frozen严格按锁文件同步
uv run pytest在项目环境中运行命令
uvx ruff check .临时运行工具

常见问题

uv: command not found

确认 uv 是否安装成功:

which uv
uv --version

如果安装脚本提示已安装但命令不可用,检查 shell 配置是否加载了 uv 安装路径。

echo $PATH
source ~/.zshrc

Python 版本不符合预期

检查项目是否存在 .python-version

cat .python-version
uv python list --only-installed
uv run python --version

如需重新固定版本:

uv python install 3.12
uv python pin 3.12
uv sync

依赖安装失败

优先确认锁文件和 Python 版本:

uv run python --version
uv sync --frozen

如果是网络问题,可以重试或检查代理、镜像源和构建机网络策略。

CI 和本地依赖不一致

确认是否提交了锁文件:

ls pyproject.toml uv.lock

CI 中使用:

uv sync --frozen

不要在 CI 中直接执行会隐式更新依赖的命令,除非流水线目标就是更新锁文件。

关联文档

  • Python 项目依赖管理规范。
  • CI/CD Python 构建环境。
  • Ruff / Pytest / Mypy 工具链配置。