Как стать автором
Обновить
4
0

Пользователь

Отправить сообщение

не скажу за питон, но в целом проводятся атаки на пакетные менеджеры, например, на npm.


вообще, я думаю, тут скорее не от MITM защита, а именно от скачивания иной версии пакета, нежели та, на которой проводилось тестирование(например, если мэйнтейнер перезалил пакет не поменяв версию), но в целом наличие такой валидации лучше, чем ее отсутствие.

да понятно, просто в случае с pipenv все эти команды выполняются оболочкой за разработчика — это удобно(одна команда вместо 2) и более безопасно(про pip freeze можно, например, попросту забыть).


такая сборка имела смысл в доисторические времена, когда еще не было wheel, а пакеты под windows распространялись в виде exe и ставить в virtualenv их было невозможно.

pip freeze не делает фиксации версий, он просто показывает версии пакетов, установленных в данном окружении.
там могут быть указаны системные пакеты, если, например, окружение собрано с флагом --system-site-packages, что в общем случае нежелательно и создает дополнительную головную боль.
pipenv решает эту проблему в полуавтоматическом режиме.

в моем случае в requirements.txt был указан только aiohttp, который по зависимостям подтянул обратно несовместимую версию yarl.


в случае с pipenv при выполнении команды


pipenv install aiohttp==2

генерируется Pipfile.lock, в котором прописан aiohttp == 2.0.5, yarl == 0.9.3(версии указаны для примера). На этой установке прогоняются тесты и в production пойдут именно эти версии пакетов.


в случае с обычными requirements.txt после установки каждого пакета надо руками запускать freeze и, возможно, очищать его от каких-то локальных пакетов.
как это работает в conda с его environment.yml я не смог найти, буду признателен за ссылку.

Основное отличие pipenv — это наличие файла Pipfile.lock, содержащего список версий всех пакетов, установленных в этом окружении, с их зависимостями + md5 сумма файла пакета.
Это дает воспроизводимость сборки. Например, нет проблемы, когда вы протестировали свой код на CI 2 дня назад, а во время раскатки на production приехала обновленная версия какой-то из зависимостей, несовместимая с вашим кодом(несколько раз натыкался на такое в связке aiohttp — yarl).
Наличие же md5 дает некоторую защиту от атаки MITM и внедрения вредоносного кода при установке на другое окружение.
а мне ваш комментарий помог пройти задание, спасибо

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность