将 python 上传到 Nexus 3.8 时出现问题 - 401 错误

Having problems uploading python to Nexus 3.8 - 401 error

我刚刚将 Nexus 升级到 3.8.0-02 OSS 以获得 Python Pypi 支持。

我创建了一个 pypi-hosted 和一个 pypi-proxy 以及一个额外的 pypi-group 来合并它们。我已经为自己赋予了与这些存储库相关的所有角色。在 UI 中一切正常,pip 可以很好地查询该代理存储库(无凭据)。

问题是我无法从 python 中的设置工具发布。我的 ~/.pypirc 模式 0600 包含: [distutils] 索引服务器 = 关系

[关系] 存储库:https://ld3-nexus-3-kev.pibenchmark.com:8443/nexus/repository/pypi-hosted/ 用户名:kevin_thorpe 密码:XXXXXXX

这个用户名和密码对 Maven 来说工作得很好,所以我知道不是这样。如果我执行 python setup.py register -r nexus 然后我会收到 401 响应。使用 twine 的结果与文档中的结果相同。奇怪的是,什么都没有登录,这显然是登录失败。流量流向服务器,但我看不到数据包中的内容。我已经尝试了我的 LDAP 用户和本地 usr,结果相同。

如何调试连接问题?似乎只有 python 才是问题所在

我的故障排除建议是查看 nexus.log 和 request.log 以获得更详细的日志语句。这些可以在 "log" 子目录的数据目录中找到。

另一种选择是在 https://issues.sonatype.org/projects/NEXUS/ and see if the Sonatype staff have any more ideas. It would be helpful if you include a support.zip (documented here: https://help.sonatype.com/display/NXRM3/Support+Features#SupportFeatures-CreatingaSupportZIP 中提交工单,其中将包含您执行此操作时的日志。

对于有些笼统的建议,我深表歉意,但到目前为止,根据您的 post 详细信息,我认为您的配置没有任何问题。

我可以重现错误:

python3 setup.py register -r myserver

在request.log中:

10.255.0.3 - - [16/Feb/2018:19:12:51 +0000] "POST /nexus/repository/pypi/ HTTP/1.1" 401 0 3 "Python-urllib/3.6"

注意第二个 - 应该是用户名,但 NONE 到了。

使用 curl 的输出示例: curl -u admin -X POST https://my_awesome_nexus_server/nexus/repository/pypi/:

10.255.0.3 - admin [16/Feb/2018:19:14:45 +0000] "POST /nexus/repository/pypi/ HTTP/1.1" 500 1948 15 "curl/7.55.1"

在 Docker 容器上测试,最新 (3.8) 和 3.7。在我看来,问题出在客户端。

更新: 设法使其与 twine 一起工作(在 virtualenv 中):

python3 setup.py build
twine upload -r myserver dist/mypackage-0.1.0.tar.gz

它在 Nexus3 (3.7) 上可用。