В официальном проекте Pipfile есть, что сказать по этому поводу :
Конкретные требования к приложению Python будут исходить от Pipfile
.Это будет включать информацию о том, откуда следует извлекать пакеты, и об их ограниченных версиях.
Подробности среды (все установленные пакеты с закрепленными версиями и другие подробности) будут храниться в Pipfile.lock
для воспроизводимости.Этот файл будет сгенерирован автоматически и не должен изменяться пользователем.
Другими словами, Pipfile
для людей и Pipfile.lock
для компьютеров.
В вашем Pipfile
вы перечисляете вещи, которые хотите в этом файле, и определяете их довольно свободно, как «Django версии 2 или выше».Но этого недостаточно для детерминированного воспроизведения окружающей среды.Означает ли это, что «Django 2.0.3» или «Django 2.1.0»?
Pipfile.lock
точно определяет требования, а также точно определяет зависимости .Например, если вы явно хотите foo
и поместите его в Pipfile
, ваш Pipfile.lock
будет сгенерирован, привязав его к определенной версии.Если foo
зависит от bar
, а bar
зависит от quux
и florp
, файл Pipfile.lock
также заблокирует bar
, quux
и florp
, поэтому незначительные различияв зависимостях не ломай вещи.