SuperAPI AI 工具集

uv

编程与开发

查看项目

更新于 10-25 12:10

技能介绍

uv 是一个速度极快的 Python 包与项目管理器,可替代 pip、pip-tools、pipx、pyenv、virtualenv、poetry 等工具。本条目是一份面向 Python 工作的 uv 使用指南。

适用时机 处理 Python 工作时优先使用 uv,尤其是出现以下信号时:存在 uv.lock 文件;requirements* 文件带有 uv 生成头部(如“This file was autogenerated by uv”)。若项目由其他工具管理,则不要使用 uv,例如 Poetry 项目(以 poetry.lock 标识)和 PDM 项目(以 pdm.lock 标识)。

工作流一:脚本 适用于运行单个 Python 文件和独立脚本。常用命令:

  • uv run script.py:运行脚本
  • uv run --with requests script.py:附带额外包运行
  • uv add --script script.py requests:向脚本内联添加依赖

工作流二:项目 适用于存在 pyproject.toml 或 uv.lock 的情况。常用命令:

  • uv init:创建新项目
  • uv add requests:添加依赖
  • uv remove requests:移除依赖
  • uv sync:按锁文件安装
  • uv run <command>:在项目环境中运行命令
  • uv run python -c "":在项目环境中运行 Python
  • uv run -p 3.12 <command>:以指定 Python 版本运行

工作流三:工具 适用于无需安装即可运行命令行工具(如 ruff、ty、pytest)。常用命令:

  • uvx <tool> <args>:不安装直接运行工具
  • uvx <tool>@<version> <args>:运行指定版本的工具 注意事项:uvx 按包名从 PyPI 运行工具,可能存在安全风险,只应运行知名工具;仅当用户明确要求时才使用 uv tool install。

工作流四:pip 接口 适用于使用 requirements.txt 或需要手动管理环境的遗留工作流,且没有 uv.lock。常用命令:

  • uv venv
  • uv pip install -r requirements.txt
  • uv pip compile requirements.in -o requirements.txt
  • uv pip sync requirements.txt
  • uv pip compile --universal requirements.in -o requirements.txt(平台无关解析) 注意事项:除非确有需要,否则不要使用 pip 接口;不要引入新的 requirements.txt 文件;新项目优先使用 uv init。

从其他工具迁移 pyenv 到 uv python:

  • pyenv install 3.12 → uv python install 3.12
  • pyenv versions → uv python list --only-installed
  • pyenv local 3.12 → uv python pin 3.12
  • pyenv global 3.12 → uv python install 3.12 --default

pipx 到 uvx:

  • pipx run ruff → uvx ruff
  • pipx install ruff → uv tool install ruff
  • pipx upgrade ruff → uv tool upgrade ruff
  • pipx list → uv tool list

pip 与 pip-tools 到 uv pip:

  • pip install package → uv pip install package
  • pip install -r req.txt → uv pip install -r req.txt
  • pip freeze → uv pip freeze
  • pip-compile req.in → uv pip compile req.in
  • pip-sync req.txt → uv pip sync req.txt
  • virtualenv .venv → uv venv

常见模式(应避免的做法与替代写法)

  • 不要在 uv 项目中用 pip:pip install requests 应改为 uv add requests
  • 不要直接运行 python:python script.py 应改为 uv run script.py;python -c "..." 应改为 uv run python -c "...";python3.12 -c "..." 应改为 uvx python@3.12 -c "..."
  • 不要在 uv 项目中手动管理环境:python -m venv .venv 加 source .venv/bin/activate 应改为 uv run <command>

文档 详细资料见官方文档 https://docs.astral.sh/uv/llms.txt,该文档为各工作流链接到具体页面。