如何将Python zipapp(.pyz)文件上传存储到Nexus托管PyPi仓库
问题解答
能否将.pyz文件存储到Nexus托管PyPi仓库
完全可以。Nexus的PyPi托管仓库支持所有符合Python分发规范的制品,shiv生成的.pyz格式zipapp属于合法的Python可执行分发产物,无额外格式限制,上传后可正常存储、拉取、分发使用。
具体上传操作步骤
前置准备
- 提前在Nexus中创建托管类型的PyPi仓库,获取仓库上传地址,格式通常为
http(s)://<你的Nexus域名>/repository/<你的PyPi仓库名>/ - 准备好拥有该PyPi仓库上传权限的账号和密码
- 本地/CI环境安装Python制品上传工具twine:
pip install twine - 生成的.pyz文件建议按照
<模块名>-<版本号>.pyz的规范命名,方便后续版本管理
手动上传(本地测试场景)
直接执行以下命令,替换对应参数即可完成上传:
twine upload \ --repository-url http(s)://<你的Nexus域名>/repository/<你的PyPi仓库名>/ \ --username <Nexus上传账号> \ --password <Nexus上传密码> \ <本地.pyz文件的路径>
命令执行成功后,即可在Nexus PyPi仓库的对应路径下看到已上传的.pyz文件。
CI/CD流水线自动上传
以通用CI/CD流水线配置为例,按照以下步骤配置即可实现自动上传:
- 将Nexus的上传地址、账号、密码配置为流水线保密环境变量,避免明文泄露敏感信息
- 流水线构建阶段完成.pyz文件生成后,安装twine工具:
pip install twine - 执行自动上传命令:
twine upload \ --repository-url $NEXUS_PYPI_REPO_URL \ --username $NEXUS_PYPI_USER \ --password $NEXUS_PYPI_PWD \ ./build/*.pyz
提示:如果你的Nexus使用自签SSL证书,测试环境可以在twine命令后添加
--insecure参数跳过SSL校验,生产环境建议添加--cert <根证书路径>参数指定合法根证书完成校验。
如果你希望上传后的.pyz文件可以直接通过pip install <包名>拉取,需要同步上传该包对应的pyproject.toml/setup.py等元信息文件,生成标准sdist/wheel包一同上传即可;单独上传的.pyz文件仅支持手动下载使用。
内容的提问来源于stack exchange,提问作者Thomas
相关产品推荐
相关产品推荐

