Python 轮子文件名没有规范形式

主要观点:Python 包文件名(wheel filenames)没有规范化形式,导致在比较两个 wheel 文件名是否“等价”时需解析而不能直接比较,且存在压缩标签集导致的非规范化问题,虽在普通设置中影响不大,但在加密等场景下有重要影响,同时提出了简单的修复方法。
关键信息

  • Python 有 sdist 和 wheel 两种包格式,wheel 文件名更复杂且包含更多元数据。
  • 虽有对 Python 包名和版本的规范化规则,但 wheel 文件名无此规则。
  • 压缩标签集可使 wheel 兼容多个标签,但其顺序和重复无标准,导致 wheel 文件名无标准规范化形式。
  • 在普通设置中多数用户无需关心此问题,但在加密等场景下可能影响签名验证。
    重要细节
  • 示例代码展示了不同情况下 wheel 文件名的差异及解析结果,如不同大小写的包名、不同形式的版本号等。
  • 详细说明了压缩标签集的定义和作用,以及其导致的非规范化问题。
  • 提及对修复此问题的建议,包括在 wheel 规范和平台兼容性标签规范中进行相关说明和规定。
  • 讨论部分提供了在 Mastodon 和 Reddit 上的讨论链接。
阅读 16
0 条评论