You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为同一版本Python包发布多Python版本兼容的.whl文件

同一Python包版本下支持多个不同平台/版本的.whl文件吗?

问题背景

  • 自研Python包目前仅针对Python 3.7编译,希望扩展支持所有≥3.7的Python版本
  • 该包是PyPI库的分支,项目依赖其特定版本,已在install_requires中指定版本号
  • 用Python 3.12编译得到package-1.5.2-cp312-cp312-win_amd64.whl,发布到Azure DevOps PyPI源时,提示「模块版本已存在」
  • 观察到PyPI上存在同一版本对应多个.whl的情况,疑问是否Azure DevOps也支持该特性

解答

完全可以将多个适配不同Python版本/平台的.whl文件归到同一个包版本下,PyPI和Azure DevOps Artifacts的PyPI源都支持这个特性,问题出在发布方式上,以下是具体解决方法:

1. 使用twine上传的正确姿势

如果你用twine工具上传包,需要:

  • 把同版本的所有.whl文件(包括已上传的Python 3.7版本和新编译的3.12版本)一起上传,命令示例:
    twine upload --repository-url <你的Azure DevOps源URL> package-1.5.2-*.whl
    
  • 如果已经上传过部分版本的.whl,不想重新上传已存在的文件,可以添加--skip-existing参数跳过已上传的文件:
    twine upload --repository-url <你的Azure DevOps源URL> --skip-existing package-1.5.2-cp312-cp312-win_amd64.whl
    

2. Azure DevOps Pipeline发布的配置调整

如果用Azure DevOps流水线发布:

  • 在「Python包发布」任务中,选择「上传所有匹配的包文件」,并填写匹配规则(比如package-1.5.2-*.whl)
  • 开启「跳过已存在的包」选项,避免因已有同版本的其他.whl而触发版本冲突报错

3. 检查whl文件名规范

确保你的.whl文件名符合PEP 425规范(比如package-1.5.2-cp312-cp312-win_amd64.whl),这样pip等包管理工具才能正确识别不同环境的适配包,避免出现识别异常。

内容的提问来源于stack exchange,提问作者Brice_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 20:52:43