uv publish
将分发包上传到索引
用法
参数
FILES要上传的文件路径。支持 glob 表达式。
默认为
dist目录。仅选择 wheel 包、源码分发包及其 attestation 文件,忽略其他文件。
选项
--allow-insecure-host,--trusted-hostallow-insecure-host允许与主机建立不安全连接。
可以多次指定。
期望接收主机名(如
localhost)、主机-端口对(如localhost:8080)或 URL(如https://localhost)。警告:此列表中的主机将不会根据系统证书存储进行验证。仅在安全网络中使用
--allow-insecure-host,因为它会绕过 SSL 验证,可能使您面临中间人攻击(MITM)的风险。也可以通过
UV_INSECURE_HOST环境变量设置。--cache-dircache-dir缓存目录的路径。
在 macOS 和 Linux 上默认为
$XDG_CACHE_HOME/uv或$HOME/.cache/uv,在 Windows 上默认为%LOCALAPPDATA%\uv\cache。要查看缓存目录的位置,请运行
uv cache dir。也可以通过
UV_CACHE_DIR环境变量设置。--check-urlcheck-url检查索引 URL 中已存在的文件,以跳过重复上传。
此选项允许在部分文件上传失败后重试发布,并处理由于并行上传相同文件导致的错误。
上传前会检查索引。如果索引中已存在完全相同的文件,则不会上传该文件。如果上传过程中发生错误,会再次检查索引,以处理相同文件被并行上传两次的情况。
具体行为因索引而异。上传到 PyPI 时,即使不使用
--check-url,上传相同文件也会成功,而大多数其他索引会报错。上传到 pyx 时,索引 URL 可以从发布 URL 自动推断。索引必须提供支持的哈希算法之一(SHA-256、SHA-384 或 SHA-512)。
也可以通过
UV_PUBLISH_CHECK_URL环境变量设置。--colorcolor-choice控制输出中颜色的使用。
默认情况下,uv 会在写入终端时自动检测是否支持颜色。
可选值:
auto:仅当输出到支持颜色的终端或 TTY 时启用彩色输出always:无论检测到的环境如何,始终启用彩色输出never:禁用彩色输出
--config-fileconfig-file用于配置的
uv.toml文件路径。虽然 uv 配置可以包含在
pyproject.toml文件中,但在此上下文中不允许这样做。也可以通过
UV_CONFIG_FILE环境变量设置。--directorydirectory在运行命令之前切换到指定目录。
相对路径将以给定目录为基准进行解析。
参见
--project仅更改项目根目录。也可以通过
UV_WORKING_DIR环境变量设置。--dry-run执行试运行而不上传文件。
启用后,如果提供了
--check-url,命令将检查已存在的文件,并在支持的情况下对索引执行验证,但不会上传任何文件。--help,-h显示此命令的简要帮助
--indexindex配置中用于发布的索引名称。
索引必须具有
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-providerkeyring-provider尝试使用
keyring进行远程需求文件的身份验证。目前仅支持
--keyring-provider subprocess,它将 uv 配置为使用keyringCLI 处理身份验证。默认为
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.toml、uv.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,-ppassword上传密码
也可以通过
UV_PUBLISH_PASSWORD环境变量设置。--projectproject在给定目录中发现项目。
所有
pyproject.toml、uv.toml和.python-version文件将通过从项目根目录向上遍历目录树来发现,项目的虚拟环境(.venv)也是如此。其他命令行参数(如相对路径)将相对于当前工作目录进行解析。
参见
--directory完全更改工作目录。此设置在
uv pip接口中使用时无效。也可以通过
UV_PROJECT环境变量设置。--publish-urlpublish-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,-ttoken上传令牌。
使用令牌等效于将
__token__作为--username并将令牌作为--password密码传递。也可以通过
UV_PUBLISH_TOKEN环境变量设置。--trusted-publishingtrusted-publishing配置可信发布(trusted publishing)。
默认情况下,uv 在受支持的环境中运行时会检查可信发布,但如果未配置则忽略它。
uv 支持的可信发布环境包括 GitHub Actions 和 GitLab CI/CD。
可选值:
automatic:在受支持的环境中尝试可信发布,如果失败则继续alwaysnever
--username,-uusername上传用户名
也可以通过
UV_PUBLISH_USERNAME环境变量设置。--verbose,-v使用详细输出。
您可以使用
RUST_LOG环境变量配置细粒度日志记录。(https://docs.rs/tracing-subscriber/latest/tracing_subscriber/filter/struct.EnvFilter.html#directives)