在我的机器上安装 jsonpickle 后( pip install jsonpickle==1.4.1 --no-compile ),我注意到子文件夹中文件的编译pandas.py
并不ext
总是可重现的。
在ext
子文件夹中,我执行了以下 bash 代码将所有.py
文件编译为.pyc
文件:
python -m compileall -d somereldir --invalidation-mode checked-hash
这在子目录中创建了一个pandas.cpython-37.pyc
文件。__pycache__
然后在__pycache__
子目录中执行:
xxd pandas.cpython-37.pyc > hex1.hex
如果我再次执行上述步骤并将 hexdump 写入hex2.hex
,我注意到有两行不匹配。
diff hex1.hex hex2.hex
288,289c288,289
< 000011f0: 0029 013e 0200 0000 723f 0000 00da 056e .).>....r?.....n
< 00001200: 616d 6573 7213 0000 0029 0372 3300 0000 amesr....).r3...
---
> 000011f0: 0029 013e 0200 0000 da05 6e61 6d65 7372 .).>......namesr
> 00001200: 3f00 0000 7213 0000 0029 0372 3300 0000 ?...r....).r3...
我执行了几次,似乎有两个“版本”的.pyc
文件,有时它们匹配,有时它们不匹配。
因此,我有几个问题:
- 为什么文件有差异
.pyc
? - 如何确保编译的
.pyc
文件始终相同。 - 我检查了其他一些 python 库,它们都生成了可重现的
.pyc
文件,那么这个pandas.py
文件有什么不同呢?