PyPI/TestPyPI上传Python包后pip install找不到版本 仅加extra-index-url可安装
问题原因排查方向
1. 官方PyPI上传未实际成功
你提到直接执行pip install mypackage==0.0.9也找不到对应版本,首先需要确认你是否真的将0.0.9版本上传到了官方PyPI:
- 执行上传操作时请确认twine指定的仓库地址是官方PyPI而非TestPyPI,很多用户会误将仅上传到TestPyPI的版本误认为已同步到官方仓库
- 检查官方PyPI对应包的公开页面的版本列表,确认0.0.9是否真实存在,不要仅依赖上传工具的成功提示,若包名与官方仓库已有包重名,你会无权限上传新版本,上传操作会静默失败仅在日志中提示错误
- PyPI包名不区分大小写,会统一转换为小写处理,确认你安装时使用的包名与上传的包名小写形式完全一致
- 确认你上传的0.0.9版本包含通用sdist/whl产物,若仅上传了特定系统、特定Python版本的专属wheel,不符合当前运行环境的话pip会过滤掉对应版本,也会提示找不到版本
2. PyPI CDN缓存延迟
不管是TestPyPI还是官方PyPI,版本上传成功后,全球CDN节点的索引缓存刷新需要时间,通常最长不超过24小时:
- 你在平台页面看到版本存在是因为后台管理页面的缓存刷新优先级更高,普通用户拉取的索引缓存还未更新,就会出现pip看不到最新版本的情况
- 可尝试执行
pip cache purge清理本地pip缓存后重试,排除本地缓存旧索引的影响
3. 关于私有download_url的疑问
你配置的未公开GitHub download_url和当前问题完全无关:
- pip默认优先拉取PyPI平台上托管的whl/sdist构建产物,只有当你指定
--find-links参数,且PyPI上无对应版本构建产物时,才会尝试从download_url地址拉取包,只要你上传版本时同步上传了构建产物,该配置不会影响正常安装流程
4. --extra-index-url可正常安装的逻辑
--extra-index-url参数会让pip同时从官方PyPI和你指定的TestPyPI索引拉取版本列表,因此只要TestPyPI的索引里存在0.0.9版本,就能匹配到并完成安装,这也侧面说明你的0.0.9版本仅在TestPyPI生效,未成功上传到官方PyPI。
内容的提问来源于stack exchange,提问作者CanCode
相关产品推荐
相关产品推荐

