Файл requirements с --hash на каждой строке чисто ставится на ноутбуке и падает с несовпадением хеша в свежем Linux-контейнере. Тот же файл, те же ==, тот же индекс.
Разделим, что произошло и что это значит. Любой --hash в файле включает у pip режим проверки хешей, и тогда каждое требование должно быть закреплено и иметь хеш, зависимости тоже. Значит, в контейнере pip выбрал файл, хеша которого в моём списке нет. Вижу два пути. Lock записал только те файлы, которые поставил бы ноутбук, а контейнеру нужен другой wheel. Или файл в индексе уже не тот, с которого снимали хеш.
Первое - дыра в моём lock, второе - ровно то, ради чего проверка существует. Снаружи оба случая падают одинаково, поэтому не хочется просто вставить хеш, который сообщил pip, и идти дальше.
Закрепляет хеш, насколько понимаю, версию. Насколько крепко он держит байты за этой версией, вот тут уверенности меньше.