【问题标题】:Python wheel: same source code but different md5sumPython轮:相同的源代码但不同的md5sum
【发布时间】:2015-12-23 14:26:06
【问题描述】:

我们需要检查自制 python 包的 md5sum,实际上是从生成的*.whl 文件中获取的。问题是每次构建时 md5sum 都会发生变化,即使源代码没有变化。我们还在第三方包(即 django-celery)上对此进行了测试,并获得了相同的行为。

所以问题是:

  1. 如果我们不更改源代码有什么不同?
  2. 是否可以为相同的 python 构建获得相同的 md5sum?

更新。

为了说明这个问题,我收到了关于两个 django-celery 构建的两份报告。 构建内容校验和完全相同(第 4 列),但 *.whl 文件本身的校验和不同。

报告链接:

https://www.dropbox.com/s/0kkbhwd2fgopg67/django_celery-3.1.17-py2-none-any2.htm?dl=0 https://www.dropbox.com/s/vecrq587jjrjh2r/django_celery-3.1.17-py2-none-any1.htm?dl=0

【问题讨论】:

  • 校验和可能会改变,因为时间戳正在改变。但是你的问题是什么?

标签: python md5sum python-wheel


【解决方案1】:

引用the relevant PEP:

轮子是一个 ZIP 格式的存档文件,具有特殊格式的文件名和 .whl 扩展名。

ZIP 存档保留每个文件的修改时间。

Wheel 存档不仅包含源代码,还包含在创建存档时动态生成的other files and directories。因此,即使你不碰你的 Python 源代码,轮子仍然会包含修改时间不同的内容。


解决此问题的一种方法是解压缩轮子并计算内容的校验和。

【讨论】:

  • 内容的校验和是相同的。添加的报告链接。
  • @some_user:这就是我回答的重点。计算内容而不是档案的校验和。
  • 它不能被接受为解决方案,因为我们需要从轮文件本身中获取校验和。
  • @some_user: 然后在不支持 mtime 的文件系统上构建轮子
猜你喜欢
  • 1970-01-01
  • 2020-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-13
  • 1970-01-01
  • 1970-01-01
  • 2022-08-05
相关资源
最近更新 更多