2024-06-28 16:08:19 发布
网友
我需要发布一个python脚本的编译版本,并能够证明(使用哈希)编译的文件确实与原始文件相同。在
到目前为止,我们使用的是一个简单的:
find . -name "*.py" -print0 | xargs -0 python2 -m py_compile
问题是这是不可复制的(不确定波动的因素是什么,但是2次执行不会为同一个python文件提供相同的.pyc),并迫使我们始终发布相同的编译版本,而不是仅仅将构建脚本提供给任何人以生成新的编译版本。在
有没有办法做到这一点?在
谢谢
2019/python3.7+更新:自PEP 552
python -m compileall -f invalidation-mode=checked-hash [file|dir] # or export SOURCE_DATE_EPOCH=1 # set py_compile to use python -m py_compile # pycompile.PycInvalidationMode.CHECKED_HASH
将创建.pycs,在其源代码更改之前不会更改。在
.pyc
编译的Python文件包括一个4字节的幻数和4字节的编译日期时间。这可能是你所看到的差异的原因。在
如果在校验和过程中省略了字节5-8,那么应该可以看到给定版本的Python的常量校验和。在
.pyc文件的格式由Ned Batchelder在this blog post中给出。在
2019/python3.7+更新:自PEP 552
将创建
.pyc
s,在其源代码更改之前不会更改。在编译的Python文件包括一个4字节的幻数和4字节的编译日期时间。这可能是你所看到的差异的原因。在
如果在校验和过程中省略了字节5-8,那么应该可以看到给定版本的Python的常量校验和。在
.pyc
文件的格式由Ned Batchelder在this blog post中给出。在相关问题 更多 >
编程相关推荐