升级Nexus 3.8.0-02 OSS后上传Python包遇401错误求助
解决Nexus 3.8.0-02 PyPI Hosted仓库发布失败的问题
我来帮你排查下setuptools发布包失败的问题。既然你已经确认UI操作和pip查询代理仓库都正常,那咱们把重点放在发布环节的配置和Nexus设置上:
1. 核对.pypirc的仓库URL是否准确
你配置的repository地址必须是pypi-hosted仓库的专属发布端点,Nexus的PyPI Hosted仓库发布URL格式应该是这样的:
https://ld3-nexus-3-kev.pibenchmark.com:8443/repository/pypi-hosted/
注意末尾的斜杠,部分版本的setuptools对这个细节很敏感。另外要切记:不能用group或proxy仓库的URL来发布——只有hosted仓库支持包上传操作。
2. 重新验证Nexus的权限与仓库配置
虽然你说已经分配了全部权限,但还是要确认两个关键点:
- 你的账号确实拥有
nx-repository-view-pypi-pypi-hosted-*权限(尤其是create和edit权限,这是发布包的核心权限) - 在Nexus的PyPI Hosted仓库配置页,Deployment policy要设置为
Allow redeploy(如果是发布全新包,Disable redeploy也能生效,但如果是覆盖已有版本的包,必须开启这个选项)
3. 升级setuptools/twine工具版本
旧版本的setuptools可能对HTTPS连接、Nexus的PyPI API兼容性不好,建议先升级到最新版:
pip install --upgrade setuptools twine
之后尝试用twine替代原生的python setup.py upload来发布(twine的错误提示更清晰,稳定性也更好):
twine upload --repository nexus dist/*
4. 排查HTTPS证书问题
如果你的Nexus使用的是自签名证书,Python可能会拒绝建立连接。可以先做以下测试:
- 在
.pypirc里添加证书路径(生产环境推荐):
[nexus] repository: https://ld3-nexus-3-kev.pibenchmark.com:8443/repository/pypi-hosted/ username: 你的Nexus账号 password: 你的Nexus密码 ca_certs: /path/to/your/ca.crt
- 或者临时设置环境变量跳过证书验证(仅用于测试,不建议生产环境使用):
export PYTHONHTTPSVERIFY=0
5. 查看Nexus日志定位问题
如果上面的步骤都没解决,直接去Nexus的日志目录(默认路径是sonatype-work/nexus3/log)查看nexus.log和request.log,里面会记录发布请求的详细错误信息,比如权限拒绝、路径错误、请求格式问题等,能帮你快速定位根因。
内容的提问来源于stack exchange,提问作者Kev Thorpe
相关产品推荐
相关产品推荐

