Nexus Repository OSS 3.7.1上传WHL包报404错误求助
解决Nexus OSS 3.7.1 PyPI分组仓库上传404错误的方法
我来帮你排查这个404问题,这在Nexus 3的PyPI仓库配置里是个常见误区,咱们一步步来解决:
核心问题:分组仓库不支持上传
首先要明确:Nexus 3中的分组(Group)仓库是只读的聚合视图,它的作用是把多个仓库(宿主、代理)的包聚合在一起供下载,但完全不接收上传请求。你遇到404的很大可能是把分组仓库地址当成了上传目标。
步骤1:确认仓库类型
登录Nexus管理面板,进入Repositories列表,查看你配置的pypi-master的Type列:
- 如果显示是
Group:这就是问题根源,你需要创建一个宿主(Hosted)类型的PyPI仓库来接收上传 - 如果显示是
Hosted:继续往下排查
步骤2:修正仓库配置(如果是分组的情况)
- 在Nexus中创建新的Hosted PyPI仓库:
- 点击
Create repository,选择pypi (hosted) - 填写仓库名称(比如
pypi-hosted),配置存储路径等,确保Deployment policy设置为Allow redeploy(如果需要覆盖旧包)
- 点击
- 把这个新的Hosted仓库加入到你的分组仓库中(保持分组用于下载聚合)
- 修改你的
*.pypirc配置,将nexus-master的地址指向这个Hosted仓库:[nexus-master] repository: http://nexus.domen.com:8081/repository/pypi-hosted/ username:admin password:admin123
步骤3:检查账号权限
确保你使用的admin账号拥有对应Hosted仓库的Deploy权限:
- 进入Nexus的
Security -> Roles,找到admin角色 - 查看权限列表,确认包含
nx-repository-view-pypi-*-deploy(或者针对你创建的Hosted仓库的具体Deploy权限)
步骤4:验证仓库地址有效性
直接在浏览器中访问Hosted仓库的地址(比如http://nexus.domen.com:8081/repository/pypi-hosted/):
- 如果能正常显示Nexus的仓库页面,说明地址正确
- 如果还是404,检查仓库名称是否拼写错误,或者仓库是否成功创建
步骤5:推荐使用Twine上传(更稳定)
旧的python setup.py upload方法已经被官方弃用,推荐使用twine工具,它的兼容性更好,错误信息更清晰:
- 安装twine:
pip install twine - 构建包:
python setup.py bdist_wheel - 上传包:
twine upload -r nexus-master dist/*
内容的提问来源于stack exchange,提问作者Sergey Sergeevich




