TGViewer
Zen of Python Zen of Python @zen_of_python · 18.8K subscribers
Post #5076 645
Одинаковые файлы, разные ZIP: почему меняется хеш

Два архива распаковываются в одинаковые файлы, но их SHA-256 различаются. Причиной могут быть даты записей, их порядок, права или настройки сжатия.

В разборе воспроизводимых архивов используют поддержку SOURCE_DATE_EPOCH в Python 3.14. При записи через writestr() с именем файла переменная позволяет задать стабильную дату вместо текущей.

Дату лучше брать из неизменяемого события сборки, например коммита. Отдельно нужно сортировать имена, фиксировать содержимое и параметры сжатия. Явно переданный ZipInfo требует своей политики метаданных.

Проверка должна сравнивать байты двух сборок, а не только распакованные файлы. Для строгой воспроизводимости закрепите и версии инструментов: одинаковые исходники не гарантируют одинаковое сжатие в любой среде.

#python #сборка
  • 🔥 1
More from @zen_of_python
  1. Oct 18, 2026Ленивый импорт откладывает не только загрузку модуля В Python 3.15 импорт можно отложить д…
  2. Oct 17, 2026Что проверить при обновлении до Pydantic 2.14 Библиотека добавила поддержку Python 3.15 и…
  3. Oct 17, 2026Почему тесты находят пакет, который забыли положить в сборку При структуре, где пакет лежи…
  4. Oct 16, 2026UTF-8 по умолчанию не перекодирует старые файлы В Python 3.15 текстовый ввод-вывод по умол…
  5. Oct 16, 2026Как сделать бэкап работающей SQLite через Python Просто скопировать файл активной базы рис…
  6. Oct 16, 2026Python обработал 7,6 ГБ JSON за 0,12 секунды Здесь интересно, куда уходило время. Дэниел Л…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →