После установки 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
Если я снова сделаю вышеупомянутые шаги и запишу шестнадцатеричный дамп в 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
файла?