python - python 中的可重现构建

标签 python binary-reproducibility

我需要发布 python 脚本的编译版本,并能够证明(使用哈希)编译文件确实与原始文件相同。

到目前为止我们使用的是一个简单的:

find . -name "*.py" -print0 | xargs -0 python2 -m py_compile

问题是这是不可重现的(不确定波动因素是什么,但两次执行不会为同一个 python 文件提供相同的 .pyc)并迫使我们始终发布相同的编译版本,而不是能够将构建脚本提供给任何人以生成新的编译版本。

有什么办法可以实现吗?

谢谢

最佳答案

编译的 Python 文件包括一个四字节的魔数(Magic Number)和四字节的编译日期时间。这可能是您看到的差异的原因。

如果您从校验和过程中省略了字节 5-8,那么您应该看到给定版本的 Python 的常量校验和。

.pyc 文件的格式在 this blog post 中给出。由 Ned Batchelder 着。

关于python - python 中的可重现构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39471960/

相关文章:

python - 以编程方式列出对象属性及其值?

python - 如何找到整数n次根?

python - 使用 python 和 pymssql 获取一系列行号之间的行

python - 在网格的小刻度的交叉点绘制标记

c# - 我可以在构建 .net 程序集时指定模块版本 ID (MVID) 吗?

python - 计算数据帧中两个单独列中的值不相等的次数百分比

c# - 如何在重建 C# 应用程序时始终生成逐字节相同的 .exe?

c++ - Visual C++ 中的二进制再现性

再现性 : Failing to rerun code over time

python - 加载包但同名包已加载