跳转至

uv publish

将分发包上传到索引

用法

uv publish [OPTIONS] [FILES]...

参数

FILES

要上传的文件路径。支持 glob 表达式。

默认为 dist 目录。仅选择 wheel 包、源码分发包及其 attestation 文件,忽略其他文件。

选项

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

--check-url check-url

检查索引 URL 中已存在的文件,以跳过重复上传。

此选项允许在部分文件上传失败后重试发布,并处理由于并行上传相同文件导致的错误。

上传前会检查索引。如果索引中已存在完全相同的文件,则不会上传该文件。如果上传过程中发生错误,会再次检查索引,以处理相同文件被并行上传两次的情况。

具体行为因索引而异。上传到 PyPI 时,即使不使用 --check-url,上传相同文件也会成功,而大多数其他索引会报错。上传到 pyx 时,索引 URL 可以从发布 URL 自动推断。

索引必须提供支持的哈希算法之一(SHA-256、SHA-384 或 SHA-512)。

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

--color color-choice

控制输出中颜色的使用。

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

可选值:

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

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

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

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

--directory directory

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

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

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

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

--dry-run

执行试运行而不上传文件。

启用后,如果提供了 --check-url,命令将检查已存在的文件,并在支持的情况下对索引执行验证,但不会上传任何文件。

--help, -h

显示此命令的简要帮助

--index index

配置中用于发布的索引名称。

索引必须具有 publish-url 设置,例如:

[[tool.uv.index]]
name = "pypi"
url = "https://pypi.org/simple"
publish-url = "https://upload.pypi.org/legacy/"

索引 url 将用于检查已存在的文件以跳过重复上传。

使用这些设置,以下两种调用是等效的:

uv publish --index pypi
uv publish --publish-url https://upload.pypi.org/legacy/ --check-url https://pypi.org/simple

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

--keyring-provider keyring-provider

尝试使用 keyring 进行远程需求文件的身份验证。

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

默认为 disabled

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

可选值:

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

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

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

--no-attestations

不上传已发布文件的 attestation 文件。

默认情况下,uv 会尝试为每个发布的分发包上传匹配的 PEP 740 attestation 文件。

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

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

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

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

--no-config

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

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

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

--no-managed-python

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

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

--no-progress

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

例如,旋转图标或进度条。

--no-python-downloads

禁用 Python 的自动下载。

--offline

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

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

--password, -p password

上传密码

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

--project project

在给定目录中发现项目。

所有 pyproject.tomluv.toml.python-version 文件将通过从项目根目录向上遍历目录树来发现,项目的虚拟环境(.venv)也是如此。

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

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

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

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

--publish-url publish-url

上传端点的 URL(不是索引 URL)。

请注意,索引访问(如 https:://.../simple)和索引上传通常使用不同的 URL。

默认为 PyPI 的发布 URL(https://upload.pypi.org/legacy/)。

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

--quiet, -q

使用静默输出。

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

--system-certs

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

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

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

--token, -t token

上传令牌。

使用令牌等效于将 __token__ 作为 --username 并将令牌作为 --password 密码传递。

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

--trusted-publishing trusted-publishing

配置可信发布(trusted publishing)。

默认情况下,uv 在受支持的环境中运行时会检查可信发布,但如果未配置则忽略它。

uv 支持的可信发布环境包括 GitHub Actions 和 GitLab CI/CD。

可选值:

  • automatic:在受支持的环境中尝试可信发布,如果失败则继续
  • always
  • never
--username, -u username

上传用户名

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

--verbose, -v

使用详细输出。

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