跳转至

uv tree

显示项目的依赖树。

用法

uv tree [OPTIONS]

选项

--all-groups

包含所有依赖组(dependency group)中的依赖。

可以使用 --no-group 来排除特定组。

--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 环境变量设置。

--depth, -d depth

依赖树的最大显示深度

[默认值: 255]

--directory directory

在运行命令之前切换到指定目录。

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

参见 --project 以仅更改项目根目录。

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

--exclude-newer exclude-newer

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

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

接受 RFC 3339 时间戳(例如 2006-12-02T02:07:43Z)、基于系统配置时区解析的相同格式的本地日期(例如 2006-12-02)、"友好"时长(例如 24 hours1 week30 days)或 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 hours1 week30 days)或 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

在不锁定项目的情况下显示依赖要求 [env: UV_FROZEN=]

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

--group group

包含指定依赖组中的依赖。

可以多次提供。

--help, -h

显示此命令的简明帮助信息

--index index

解析依赖时使用的 URL,作为默认索引的补充。

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

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

不支持索引名称作为值。相对路径必须使用 ./../(Unix)或 .\\..\\./../(Windows)来与索引名称区分。

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

--index-strategy index-strategy

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

默认情况下,uv 会在找到给定包的第一个索引处停止,并将解析限制为该第一个索引(first-index)上存在的版本。这可以防止"依赖混淆"(dependency confusion)攻击,即攻击者可以在替代索引上以相同名称上传恶意包。

也可以通过 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 环境变量设置。

--invert, --reverse

显示给定包的反向依赖。此标志将反转树并显示依赖给定包的包

--keyring-provider keyring-provider

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

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

默认为 disabled

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

可选值:

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

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

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

默认值:macOS 和 Linux 上为 clone(也称为写时复制,Copy-on-Write),Windows 上为 hardlink

警告:不鼓励使用 symlink 链接模式,因为它会在缓存和目标环境之间创建紧密耦合。例如,清除缓存(uv cache clean)将因移除底层源文件而破坏所有已安装的包。请谨慎使用符号链接。

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

可选值:

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

断言 uv.lock 将保持不变 [env: UV_LOCKED=]

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

--managed-python

要求使用 uv 管理的 Python 版本 [env: UV_MANAGED_PYTHON=]

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

--no-binary

不安装预构建的 wheel。

指定的包将从源码构建并安装。解析器仍将使用预构建的 wheel 来提取包元数据(如果可用)。

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

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

不对特定包安装预构建的 wheel [env: 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

不构建特定包的源码分发版 [env: UV_NO_BUILD_PACKAGE=]

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

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

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

--no-config

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

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

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

--no-dedupe

不对重复的依赖进行去重。通常,当一个包已经显示过其依赖后,再次出现不会重新显示其依赖,并会用 (*) 表示已经显示过。此标志会导致这些重复项重复显示

--no-default-groups

忽略默认依赖组。

uv 默认包含 tool.uv.default-groups 中定义的组。此选项禁用该功能,但仍可以使用 --group 包含特定组。

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

--no-dev

禁用开发依赖组 [env: UV_NO_DEV=]

此选项是 --no-group dev 的别名。参见 --no-default-groups 以禁用所有默认组。

--no-group no-group

禁用指定依赖组 [env: UV_NO_GROUP=]

此选项始终优先于默认组、--all-groups--group

可以多次提供。

--no-index

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

--no-managed-python

禁用使用 uv 管理的 Python 版本 [env: UV_NO_MANAGED_PYTHON=]

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

--no-progress

隐藏所有进度输出 [env: UV_NO_PROGRESS=]

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

--no-python-downloads

禁用 Python 的自动下载。

--no-sources

在解析依赖时忽略 tool.uv.sources 表。用于根据符合标准的、可发布的包元数据进行锁定,而不是使用任何工作区、Git、URL 或本地路径源

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

--no-sources-package no-sources-package

不对指定包使用 tool.uv.sources 表中的源 [env: UV_NO_SOURCES_PACKAGE=]

--offline

禁用网络访问 [env: UV_OFFLINE=]

禁用后,uv 将仅使用本地缓存数据和本地可用文件。

--only-dev

仅包含开发依赖组。

项目及其依赖将被省略。

此选项是 --only-group dev 的别名。隐含 --no-default-groups

--only-group only-group

仅包含指定依赖组中的依赖。

项目及其依赖将被省略。

可以多次提供。隐含 --no-default-groups

--outdated

显示树中每个包的最新可用版本

--package package

仅显示指定的包

--prerelease prerelease

考虑预发布(pre-release)版本时使用的策略。

默认情况下,uv 将接受发布预发布版本的包的预发布版本,以及在声明式版本说明符(specifier)中包含显式预发布标记的第一方依赖(if-necessary-or-explicit)。

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

可选值:

  • disallow:禁止所有预发布版本
  • allow:允许所有预发布版本
  • if-necessary:如果包的所有版本都是预发布版本,则允许
  • explicit:允许版本要求中带有显式预发布标记的第一方包的预发布版本
  • if-necessary-or-explicit:如果包的所有版本都是预发布版本,或者包的版本要求中带有显式预发布标记,则允许
--project project

在给定目录中发现项目。

通过从项目根目录向上遍历目录树,会发现所有 pyproject.tomluv.toml.python-version 文件,以及项目的虚拟环境(.venv)。

其他命令行参数(例如相对路径)将相对于当前工作目录解析。

参见 --directory 以完全更改工作目录。

此设置在 uv pip 接口中使用时无效。

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

--prune prune

从依赖树显示中剪去给定包

--python, -p python

用于锁定和过滤的 Python 解释器。

默认情况下,树会被过滤以匹配 Python 解释器报告的平台。使用 --universal 显示所有平台的树,或使用 --python-version--python-platform 覆盖部分标记(marker)。

有关 Python 发现和支持的请求格式的详细信息,请参见 uv python

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

--python-platform python-platform

过滤树时使用的平台。

例如,传入 --platform windows 以显示在 Windows 上安装时会包含的依赖。

表示为"目标三元组"(target triple),即根据 CPU、厂商和操作系统名称描述目标平台的字符串,例如 x86_64-unknown-linux-gnuaarch64-apple-darwin

可选值:

  • windowsx86_64-pc-windows-msvc 的别名,Windows 的默认目标
  • linuxx86_64-unknown-linux-gnu 的别名,Linux 的默认目标
  • macosaarch64-apple-darwin 的别名,macOS 的默认目标
  • x86_64-pc-windows-msvc:64 位 x86 Windows 目标
  • aarch64-pc-windows-msvc:ARM64 Windows 目标
  • i686-pc-windows-msvc:32 位 x86 Windows 目标
  • x86_64-unknown-linux-gnu:x86 Linux 目标。等同于 x86_64-manylinux_2_28
  • aarch64-apple-darwin:基于 ARM 的 macOS 目标,适用于 Apple Silicon 设备
  • x86_64-apple-darwin:x86 macOS 目标
  • aarch64-unknown-linux-gnu:ARM64 Linux 目标。等同于 aarch64-manylinux_2_28
  • aarch64-unknown-linux-musl:ARM64 Linux 目标
  • x86_64-unknown-linux-muslx86_64 Linux 目标
  • riscv64-unknown-linux:RISCV64 Linux 目标
  • x86_64-manylinux2014x86_64 目标,适用于 manylinux2014 平台。等同于 x86_64-manylinux_2_17
  • x86_64-manylinux_2_17x86_64 目标,适用于 manylinux_2_17 平台
  • x86_64-manylinux_2_28x86_64 目标,适用于 manylinux_2_28 平台
  • x86_64-manylinux_2_31x86_64 目标,适用于 manylinux_2_31 平台
  • x86_64-manylinux_2_32x86_64 目标,适用于 manylinux_2_32 平台
  • x86_64-manylinux_2_33x86_64 目标,适用于 manylinux_2_33 平台
  • x86_64-manylinux_2_34x86_64 目标,适用于 manylinux_2_34 平台
  • x86_64-manylinux_2_35x86_64 目标,适用于 manylinux_2_35 平台
  • x86_64-manylinux_2_36x86_64 目标,适用于 manylinux_2_36 平台
  • x86_64-manylinux_2_37x86_64 目标,适用于 manylinux_2_37 平台
  • x86_64-manylinux_2_38x86_64 目标,适用于 manylinux_2_38 平台
  • x86_64-manylinux_2_39x86_64 目标,适用于 manylinux_2_39 平台
  • x86_64-manylinux_2_40x86_64 目标,适用于 manylinux_2_40 平台
  • aarch64-manylinux2014:ARM64 目标,适用于 manylinux2014 平台。等同于 aarch64-manylinux_2_17
  • aarch64-manylinux_2_17:ARM64 目标,适用于 manylinux_2_17 平台
  • aarch64-manylinux_2_28:ARM64 目标,适用于 manylinux_2_28 平台
  • aarch64-manylinux_2_31:ARM64 目标,适用于 manylinux_2_31 平台
  • aarch64-manylinux_2_32:ARM64 目标,适用于 manylinux_2_32 平台
  • aarch64-manylinux_2_33:ARM64 目标,适用于 manylinux_2_33 平台
  • aarch64-manylinux_2_34:ARM64 目标,适用于 manylinux_2_34 平台
  • aarch64-manylinux_2_35:ARM64 目标,适用于 manylinux_2_35 平台
  • aarch64-manylinux_2_36:ARM64 目标,适用于 manylinux_2_36 平台
  • aarch64-manylinux_2_37:ARM64 目标,适用于 manylinux_2_37 平台
  • aarch64-manylinux_2_38:ARM64 目标,适用于 manylinux_2_38 平台
  • aarch64-manylinux_2_39:ARM64 目标,适用于 manylinux_2_39 平台
  • aarch64-manylinux_2_40:ARM64 目标,适用于 manylinux_2_40 平台
  • aarch64-linux-android:ARM64 Android 目标
  • x86_64-linux-androidx86_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:ARM64 目标,适用于 iOS 设备
  • arm64-apple-ios-simulator:ARM64 目标,适用于 iOS 模拟器
  • x86_64-apple-ios-simulatorx86_64 目标,适用于 iOS 模拟器
--python-version python-version

过滤树时使用的 Python 版本。

例如,传入 --python-version 3.10 以显示在 Python 3.10 上安装时会包含的依赖。

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

--quiet, -q

使用静默输出。

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

--resolution resolution

在给定包依赖的不同兼容版本之间进行选择时使用的策略。

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

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

可选值:

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

显示指定 PEP 723 Python 脚本的依赖树,而不是当前项目。

如果提供,uv 将根据其内联元数据表解析依赖,遵循 PEP 723 规范。

--show-sizes

显示树中包的压缩 wheel 大小

--system-certs

是否从平台的原生证书存储加载 TLS 证书 [env: UV_SYSTEM_CERTS=]

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

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

--universal

显示平台无关的依赖树。

显示所有 Python 版本和平台的已解析包版本,而不是过滤为与当前环境相关的版本。

每个包可能显示多个版本。

--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