跳转至

uv audit

审计项目的依赖项。

审计会检查依赖项中的已知漏洞,以及弃用和隔离等"不良"状态。

默认情况下,会审计项目中的所有附加依赖(extras)和依赖组。要从审计中排除附加依赖和/或依赖组,请使用 --no-extra--no-group 及相关选项。

用法

uv audit [OPTIONS]

选项

--allow-insecure-host, --trusted-host allow-insecure-host

允许与主机建立不安全连接。

可以提供多次。

期望接收主机名(例如 localhost)、主机-端口对(例如 localhost:8080)或 URL(例如 https://localhost)。

警告:此列表中的主机将不会根据系统证书存储进行验证。仅在具有已验证来源的安全网络中使用 --allow-insecure-host,因为它会绕过 SSL 验证,可能使您遭受中间人(MITM)攻击。

也可以通过 UV_INSECURE_HOST 环境变量设置。

--cache-dir cache-dir

缓存目录路径。

在 macOS 和 Linux 上默认为 $XDG_CACHE_HOME/uv$HOME/.cache/uv,在 Windows 上默认为 %LOCALAPPDATA%\uv\cache

要查看缓存目录的位置,请运行 uv cache dir

也可以通过 UV_CACHE_DIR 环境变量设置。

--color color-choice

控制输出中颜色的使用。

默认情况下,uv 在写入终端时会自动检测对颜色的支持。

可选值:

  • auto: 仅当输出到支持颜色的终端或 TTY 时启用彩色输出
  • always: 无论检测到何种环境,始终启用彩色输出
  • never: 禁用彩色输出
--config-file config-file

用于配置的 uv.toml 文件路径。

虽然 uv 配置可以包含在 pyproject.toml 文件中,但在此上下文中不允许。

也可以通过 UV_CONFIG_FILE 环境变量设置。

--config-setting, --config-settings, -C config-setting

传递给 PEP 517 构建后端的设置,以 KEY=VALUE 对的形式指定

--config-settings-package, --config-settings-package config-settings-package

传递给特定包的 PEP 517 构建后端的设置,以 PACKAGE:KEY=VALUE 对的形式指定

--default-index default-index

默认包索引的 URL(默认为:https://pypi.org/simple)。

接受符合 PEP 503(简单仓库 API)的仓库,或按相同格式布局的本地目录。

此标志指定的索引优先级低于通过 --index 标志指定的所有其他索引。

也可以通过 UV_DEFAULT_INDEX 环境变量设置。

--directory directory

运行命令前切换到给定目录。

相对路径以给定目录为基准进行解析。

如需仅更改项目根目录,请参见 --project

也可以通过 UV_WORKING_DIR 环境变量设置。

--exclude-newer exclude-newer

将候选包限制为在给定日期之前上传的包。

日期会与每个分发包构件的上传时间进行比较(即每个文件上传到包索引的时间),而非包版本的发布日期。

接受 RFC 3339 时间戳(例如 2006-12-02T02:07:43Z)、相同格式的本地日期(例如 2006-12-02,根据系统配置的时区解析)、"友好"时长(例如 24 小时1 周30 天)或 ISO 8601 时长(例如 PT24HP7DP30D)。

时长不遵守本地时区的语义,始终解析为固定的秒数,假设一天为 24 小时(例如,忽略夏令时转换)。不允许使用月和年等日历单位。

也可以通过 UV_EXCLUDE_NEWER 环境变量设置。

--exclude-newer-package exclude-newer-package

将特定包的候选包限制为在给定日期之前上传的包。

接受格式为 PACKAGE=DATE 的包-日期对,其中 DATE 是 RFC 3339 时间戳(例如 2006-12-02T02:07:43Z)、相同格式的本地日期(例如 2006-12-02,根据系统配置的时区解析)、"友好"时长(例如 24 小时1 周30 天)或 ISO 8601 时长(例如 PT24HP7DP30D)。

时长不遵守本地时区的语义,始终解析为固定的秒数,假设一天为 24 小时(例如,忽略夏令时转换)。不允许使用月和年等日历单位。

可为不同的包提供多次。

--extra-index-url extra-index-url

(已弃用:请改用 --index)除了 --index-url 之外,还要使用的额外包索引 URL。

接受符合 PEP 503(简单仓库 API)的仓库,或按相同格式布局的本地目录。

通过此标志提供的所有索引优先级高于通过 --index-url 指定的索引(默认为 PyPI)。当提供多个 --extra-index-url 标志时,先提供的值优先级更高。

也可以通过 UV_EXTRA_INDEX_URL 环境变量设置。

除了注册表索引中找到的候选分发包之外,还要搜索的位置。

如果是路径,目标必须是一个顶级包含 wheel 文件(.whl)或源码分发版(例如 .tar.gz.zip)的目录。

如果是 URL,该页面必须包含符合上述格式的包文件扁平链接列表。

也可以通过 UV_FIND_LINKS 环境变量设置。

--fork-strategy fork-strategy

在跨 Python 版本和平台选择给定包的多个版本时使用的策略。

默认情况下,uv 会优化为每个支持的 Python 版本(requires-python)选择每个包的最新版本,同时最大限度地减少跨平台选择的版本数量。

fewest 模式下,uv 会最大限度地减少每个包选择的版本数量,如果你选择那些较旧版本,它们兼容更广泛的支持 Python 版本或平台。

也可以通过 UV_FORK_STRATEGY 环境变量设置。

可选值:

  • fewest: 优化为每个包选择最少数量的版本。如果较旧版本兼容更广泛的支持 Python 版本或平台,则可能优先选择较旧版本
  • requires-python: 优化为每个支持的 Python 版本选择最新支持版本
--frozen

不锁定项目即可审计依赖项 [环境变量:UV_FROZEN=]

如果锁定文件缺失,uv 将退出并报错。

--help, -h

显示此命令的简明帮助

--ignore ignore

按 ID 忽略漏洞。

匹配任何提供 ID(包括别名)的漏洞将从审计结果中排除。

可以提供多次。

--ignore-until-fixed ignore-until-fixed

按 ID 忽略漏洞,但仅在没有可用修复时忽略。

匹配任何提供 ID(包括别名)的漏洞,只要它们没有已知的修复版本,就会从审计结果中排除。一旦有修复版本可用,该漏洞将再次被报告。

可以提供多次。

--index index

除了默认索引之外,解析依赖时要使用的 URL。

接受符合 PEP 503(简单仓库 API)的仓库,或按相同格式布局的本地目录。

通过此标志提供的所有索引优先级高于通过 --default-index 指定的索引(默认为 PyPI)。当提供多个 --index 标志时,先提供的值优先级更高。

不支持将索引名称作为值。在 Unix 系统上,相对路径必须使用 ./../ 与索引名称区分,在 Windows 上必须使用 .\\..\\./../ 区分。

也可以通过 UV_INDEX 环境变量设置。

--index-strategy index-strategy

针对多个索引 URL 解析时使用的策略。

默认情况下,uv 会在第一个包含给定包可用的索引处停止,将解析限制在第一个索引上存在的包(first-index)。这样可以防止"依赖混淆"攻击,即攻击者可以在备用索引下上传同名的恶意包。

也可以通过 UV_INDEX_STRATEGY 环境变量设置。

可选值:

  • first-index: 仅使用第一个返回给定包名匹配结果的索引
  • unsafe-first-match: 在所有索引中搜索每个包名,在耗尽第一个索引的所有版本后再移动到下一个
  • unsafe-best-match: 在所有索引中搜索每个包名,优先选择找到的"最佳"版本。如果包版本在多个索引中存在,则仅查看第一个索引的条目
--index-url, -i index-url

(已弃用:请改用 --default-index)Python 包索引的 URL(默认为:https://pypi.org/simple)。

接受符合 PEP 503(简单仓库 API)的仓库,或按相同格式布局的本地目录。

此标志指定的索引优先级低于通过 --extra-index-url 标志指定的所有其他索引。

也可以通过 UV_INDEX_URL 环境变量设置。

--keyring-provider keyring-provider

尝试使用 keyring 进行索引 URL 的身份验证。

目前,仅支持 --keyring-provider subprocess,它配置 uv 使用 keyring CLI 处理身份验证。

默认为 disabled

也可以通过 UV_KEYRING_PROVIDER 环境变量设置。

可选值:

  • disabled: 不使用 keyring 进行凭据查找
  • subprocess: 使用 keyring 命令进行凭据查找

从全局缓存安装包时使用的方法。

此选项仅在构建源码分发版时使用。

在 macOS 和 Linux 上默认为 clone(也称为写时复制),在 Windows 上默认为 hardlink

警告:不推荐使用符号链接模式,因为它们会在缓存和目标环境之间产生紧密耦合。例如,清除缓存(uv cache clean)会通过删除底层源文件破坏所有已安装的包。请谨慎使用符号链接。

也可以通过 UV_LINK_MODE 环境变量设置。

可选值:

  • clone: 从源克隆(即写时复制)包到目标位置
  • copy: 从源复制包到目标位置
  • hardlink: 从源硬链接包到目标位置
  • symlink: 从源符号链接包到目标位置
--locked

断言 uv.lock 将保持不变 [环境变量:UV_LOCKED=]

要求锁定文件是最新的。如果锁定文件缺失或需要更新,uv 将退出并报错。

--managed-python

要求使用 uv 管理的 Python 版本 [环境变量:UV_MANAGED_PYTHON=]

默认情况下,uv 优先使用它管理的 Python 版本。但是,如果未安装 uv 管理的 Python,它会使用系统 Python 版本。此选项禁用使用系统 Python 版本。

--no-binary

不安装预构建 wheel。

给定的包将从源码构建和安装。如果可用,解析器仍会使用预构建 wheel 提取包元数据。

也可以通过 UV_NO_BINARY 环境变量设置。

--no-binary-package no-binary-package

特定包不安装预构建 wheel [环境变量:UV_NO_BINARY_PACKAGE=]

--no-build

不构建源码分发版。

启用后,解析将不会运行任意 Python 代码。将重用已构建源码分发版的缓存 wheel,但需要构建分发包的操作将退出并报错。

也可以通过 UV_NO_BUILD 环境变量设置。

--no-build-isolation

构建源码分发版时禁用隔离。

假设 PEP 518 指定的构建依赖已安装。

也可以通过 UV_NO_BUILD_ISOLATION 环境变量设置。

--no-build-isolation-package no-build-isolation-package

构建特定包的源码分发版时禁用隔离。

假设包的构建依赖(由 PEP 518 指定)已安装。

--no-build-package no-build-package

不构建特定包的源码分发版 [环境变量:UV_NO_BUILD_PACKAGE=]

--no-cache, --no-cache-dir, -n

避免读取或写入缓存,改为在操作期间使用临时目录

也可以通过 UV_NO_CACHE 环境变量设置。

--no-config

避免发现配置文件(pyproject.tomluv.toml)。

通常,会在当前目录、父目录或用户配置目录中发现配置文件。

也可以通过 UV_NO_CONFIG 环境变量设置。

--no-default-groups

不审计默认依赖组

也可以通过 UV_NO_DEFAULT_GROUPS 环境变量设置。

--no-dev

不审计开发依赖组 [环境变量:UV_NO_DEV=]

此选项是 --no-group dev 的别名。如需排除所有默认组,请参见 --no-default-groups

此选项仅在项目中运行时可用。

--no-extra no-extra

不审计指定的可选依赖。

可以提供多次。

--no-group no-group

不审计指定的依赖组 [环境变量:UV_NO_GROUP=]

可以提供多次。

--no-index

忽略注册表索引(例如 PyPI),转而依赖直接 URL 依赖和通过 --find-links 提供的依赖

--no-managed-python

禁用使用 uv 管理的 Python 版本 [环境变量:UV_NO_MANAGED_PYTHON=]

相反,uv 将在系统上搜索合适的 Python 版本。

--no-progress

隐藏所有进度输出 [环境变量:UV_NO_PROGRESS=]

例如,旋转指示器或进度条。

--no-python-downloads

禁用 Python 的自动下载。

--only-group only-group

仅审计指定的依赖组

可以提供多次。

--os os

解析依赖时要定位的操作系统。

默认为当前系统的操作系统。

也可以通过 UV_OS 环境变量设置。

--platform platform

解析依赖时要定位的平台。

接受任何 rustc 平台三元组,例如 x86_64-apple-darwinaarch64-unknown-linux-gnu

也可以通过 UV_PLATFORM 环境变量设置。

可选值:

  • aarch64-apple-darwin: Apple Silicon macOS 平台
  • aarch64-unknown-linux-gnu: GNU 工具链下的 ARM64 Linux 平台
  • aarch64-unknown-linux-musl: musl 工具链下的 ARM64 Linux 平台
  • arm-unknown-linux-gnueabihf: GNU 工具链下的 ARMv6 Linux 平台
  • armv7-unknown-linux-gnueabihf: GNU 工具链下的 ARMv7 Linux 平台
  • i686-apple-darwin: Intel 32 位 macOS 平台
  • i686-unknown-linux-gnu: GNU 工具链下的 32 位 x86 Linux 平台
  • powerpc64-unknown-linux-gnu: GNU 工具链下的 64 位 PowerPC Linux(大端序)平台
  • powerpc64le-unknown-linux-gnu: GNU 工具链下的 64 位 PowerPC Linux(小端序)平台
  • riscv64gc-unknown-linux-gnu: GNU 工具链下的 RISC-V 64 GC Linux 平台
  • x86_64-apple-darwin: Intel macOS 平台
  • x86_64-pc-windows-msvc: 64 位 Windows MSVC 平台
  • x86_64-unknown-linux-gnu: GNU 工具链下的 64 位 x86 Linux 平台
  • x86_64-unknown-linux-musl: musl 工具链下的 64 位 x86 Linux 平台
  • aarch64-apple-ios: iOS ARM64 平台
  • aarch64-apple-ios-sim: iOS 模拟器 ARM64 平台
  • aarch64-linux-android: Android ARM64 平台
  • x86_64-linux-android: Android x86_64 平台
  • x86_64-unknown-none: 裸机 x86_64 平台
  • aarch64-unknown-none: 裸机 ARM64 平台
  • thumbv7em-none-eabi: ARMv7-M FPU 裸机平台
  • thumbv8m.main-none-eabi: ARMv8-M 主裸机平台
  • wasm32-unknown-emscripten: Emscripten WebAssembly 平台
  • wasm32-unknown-unknown: 通用 WebAssembly 平台
  • aarch64-manylinux_2_24: 用于 manylinux_2_24 平台的 ARM64 目标
  • aarch64-manylinux_2_25: 用于 manylinux_2_25 平台的 ARM64 目标
  • aarch64-manylinux_2_26: 用于 manylinux_2_26 平台的 ARM64 目标
  • aarch64-manylinux_2_27: 用于 manylinux_2_27 平台的 ARM64 目标
  • aarch64-manylinux_2_28: 用于 manylinux_2_28 平台的 ARM64 目标
  • aarch64-manylinux_2_29: 用于 manylinux_2_29 平台的 ARM64 目标
  • aarch64-manylinux_2_30: 用于 manylinux_2_30 平台的 ARM64 目标
  • aarch64-manylinux_2_31: 用于 manylinux_2_31 平台的 ARM64 目标
  • aarch64-manylinux_2_32: 用于 manylinux_2_32 平台的 ARM64 目标
  • aarch64-manylinux_2_33: 用于 manylinux_2_33 平台的 ARM64 目标
  • aarch64-manylinux_2_34: 用于 manylinux_2_34 平台的 ARM64 目标
  • aarch64-manylinux_2_35: 用于 manylinux_2_35 平台的 ARM64 目标
  • aarch64-manylinux_2_36: 用于 manylinux_2_36 平台的 ARM64 目标
  • aarch64-manylinux_2_37: 用于 manylinux_2_37 平台的 ARM64 目标
  • aarch64-manylinux_2_38: 用于 manylinux_2_38 平台的 ARM64 目标
  • aarch64-manylinux_2_39: 用于 manylinux_2_39 平台的 ARM64 目标
  • aarch64-manylinux_2_40: 用于 manylinux_2_40 平台的 ARM64 目标
  • aarch64-linux-android: ARM64 Android 目标
  • x86_64-linux-android: x86_64 Android 目标
  • wasm32-pyodide2024: 使用 Pyodide 2024 平台的 wasm32 目标。适用于 Python 3.12。参见 https://pyodide.org/en/stable/development/abi/312.html
  • wasm32-pyodide2025: 使用 Pyodide 2025 平台的 wasm32 目标。适用于 Python 3.13。参见 https://pyodide.org/en/stable/development/abi/313.html
  • arm64-apple-ios: iOS 设备的 ARM64 目标
  • arm64-apple-ios-simulator: iOS 模拟器的 ARM64 目标
  • x86_64-apple-ios-simulator: iOS 模拟器的 x86_64 目标
--python-version python-version

审计时使用的 Python 版本。

例如,传递 --python-version 3.10 以审计在 Python 3.10 上安装时会包含的依赖项。

默认为发现的 Python 解释器版本。

--quiet, -q

使用安静输出。

重复此选项,例如 -qq,将启用静默模式,在此模式下 uv 不会向标准输出写入任何内容。

--resolution resolution

在给定包需求的不同兼容版本之间选择时使用的策略。

默认情况下,uv 会使用每个包的最新兼容版本(highest)。

也可以通过 UV_RESOLUTION 环境变量设置。

可选值:

  • highest: 解析每个包的最高兼容版本
  • lowest: 解析每个包的最低兼容版本
  • lowest-direct: 解析所有直接依赖的最低兼容版本,以及所有传递依赖的最高兼容版本
--script script

审计指定的 PEP 723 Python 脚本,而非当前项目。

指定的脚本必须已锁定,即在审计之前需要使用 uv lock --script <script> 进行锁定。

--service-format service-format

漏洞查询使用的服务格式。

每个服务格式都有默认 URL,可以通过 --service-url 更改。默认值为:

[默认:osv]

可选值:

  • osv
--service-url service-url

漏洞服务 API 端点的 URL。

如果未提供,将使用所选服务的默认 URL。

服务需要使用 OSV 协议,除非 --service-format 请求了不同的格式。

--system-certs

是否从平台原生证书存储加载 TLS 证书 [环境变量:UV_SYSTEM_CERTS=]

默认情况下,uv 使用捆绑的 Mozilla 根证书,这提高了可移植性和性能(尤其是在 macOS 上)。

但是,在某些情况下,您可能需要使用平台原生证书存储,特别是当您依赖包含在系统证书存储中的企业信任根(例如,强制代理)时。

--upgrade, -U

允许包升级,忽略任何现有输出文件中的固定版本。隐含 --refresh

--upgrade-group upgrade-group

允许依赖组中所有包升级,忽略任何现有输出文件中的固定版本

--upgrade-package, -P upgrade-package

允许特定包升级,忽略任何现有输出文件中的固定版本。隐含 --refresh-package

--verbose, -v

使用详细输出。

你可以使用 RUST_LOG 环境变量配置细粒度日志记录。(https://docs.rs/tracing-subscriber/latest/tracing_subscriber/filter/struct.EnvFilter.html#directives