Как выполнить автоматическое обновление requirements.txt при установке нового/обновленного пакета

#python #pip #requirements.txt

Вопрос:

Как бы я поступил с автоматическим обновлением requirements.txt файл для того, когда я устанавливаю/обновляю пакет?

Моя основная идея заключалась бы в том, что когда я нажимаю обновление в git, оно автоматически создает requirements.txt файл (или что-то в этом роде).

Я понимаю, что существует много сторонних инструментов, но ни один из них, похоже, тоже этого не делает: pipreqs, pipenv, поэзия.

Комментарии:

1. Это звучит как интересная идея. Как вы ожидаете, что git узнает, какие пакеты следует добавить или изменить? Это не похоже на то, что мерзавец мог знать. Возможно, вы сможете обойтись с помощью git-крючка при фиксации, а не при нажатии. Но это кажется рискованным, если у вас нет тщательного набора тестов, чтобы найти какие-либо важные изменения.

2.Каково представление ваших требований (на основе которых вы создали файл), если это не requirements.txt так?

3. Я знаю, что это не обязательно должно быть через git, но это была просто идея. Может быть, какая-то вещь, которая проверяет venv по сравнению с текущей версией requirements.txt и посмотрите, есть ли какие-либо изменения и автоматическое обновление таким образом?

Ответ №1:

Поэзия как бы делает это. В нем есть pyproject.toml файл, в котором вы объявляете зависимости. Это можно редактировать вручную или чаще обновлять, когда вы это делаете poetry add . Затем есть poetry.lock файл, содержащий информацию о версии для всех зависимостей, как прямых, так и переходных. Этот файл обновляется при каждом запуске poetry install . Если вы регулярно запускаете poetry install обновление зависимостей, вы можете зафиксировать изменения в файле блокировки.

В зависимости от точного синтаксиса , используемого для версий зависимостей pyproject.toml , poetry install может обновляться до последнего исправления зависимости. Я думаю, что он обновится до последней второстепенной версии. Но он не будет автоматически обновляться до новой основной версии, потому что это может привести к серьезным изменениям, требующим некоторого человеческого внимания.