错误InvalidDistribution:无效的分发元数据:'2.5' 不是一个有效的元数据版本
用于与PyPI交互的Twine工具(v6.2)在上传wheel时会给出如下错误:
$ twine --version
twine version 6.2.0 (keyring: 25.7.0, packaging: 26.2, requests: 2.34.0, requests-toolbelt: 1.0.0, urllib3: 2.7.0, id: 1.6.1)
$ twine upload meowpkg-0.1-py2.py3-none-any.whl
Uploading distributions to https://upload.pypi.org/legacy/
ERROR InvalidDistribution: Invalid distribution metadata: '2.5' is not a valid metadata version
该wheel(.zip)包含下列文件:
meowpkg-0.1-py2.py3-none-any.whl
└── meowpkg-0.1.dist-info
├── METADATA
├── RECORD
└── WHEEL
dist-info的内容:
$ cat METADATA
Metadata-Version: 2.5
Name: meowpkg
Version: 0.1
Import-Name:
$ cat RECORD
meowpkg-0.1.dist-info/METADATA,sha256=VkjlIuVod8UShkZwydWzpGXsIiLeP-FWnhDZmUlVshg,63
meowpkg-0.1.dist-info/WHEEL,sha256=vwhs3Rbpi5CZJZl6V8jUp0Am3eZXbojfqs5Rr4FGqBQ,98
meowpkg-0.1.dist-info/RECORD,,
$ cat WHEEL
Wheel-Version: 1.0
Generator: whl 0.0.7
Root-Is-Purelib: true
Tag: py2-none-any
Tag: py3-none-any
确切的wheel可以在 meowpkg-0.1-py2.py3-none-any.whl 下载,或者通过将上面显示的dist-info内容打包成zip来重新创建。
发行文件本身没有问题,元数据2.5自 2025年 9月起就是有效的。问题出在哪里?
解决方案
Twine似乎确实不支持2.5,但按照规范来说这是可以的。"metadata 2.5 is valid since Sept 2025" 这句话有点正确,但有点误导。PyPa规范的表述是:
自动化工具在使用元数据时SHOULD警告如果metadata-version超过它们所支持的最高版本,且MUST失败如果metadata-version的主版本大于它们所支持的最高版本(如在版本说明符规范中所述,主版本是在第一个点号前的值)。
也就是说,元数据2.5并不必然能与所有工具配合工作,预计有些工具根本就无法与之配合。官方的PyPa工具落在这一类确实有点奇怪,但情况就是这样。(事实上,Twine也还不支持Python 3.14,大概也是在差不多的时间发布的。)
如果你愿意,可以在Twine的仓库中提交一个issue。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。