#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
может обновляться до последнего исправления зависимости. Я думаю, что он обновится до последней второстепенной версии. Но он не будет автоматически обновляться до новой основной версии, потому что это может привести к серьезным изменениям, требующим некоторого человеческого внимания.