Pipenv обновляет все зависимости, вносящие изменения
У меня проблемы с приложением, которое использует Django. Все находится в контейнере docker, есть pipfile
и pipfile.lock
. Пока все хорошо.
Проблема возникает, когда я хочу установить новую зависимость. Я открываю оболочку контейнера docker и устанавливаю зависимость с помощью pipenv install <package-name>
.
После установки пакета pipenv выполняет команду для обновления файла pipfile.lock
и обновляет все пакеты до их последней версии, привнося в эти обновления множество ломающих изменений.
Я не понимаю, почему это происходит, у меня все пакеты перечислены в моем pipfile
с ~=
, это должно помочь избежать обновления до версий, которые могут сломать ваше приложение.
Приведу пример, у меня в pipfile
есть такая зависимость: dj-stripe = "~=2.4". Но, в файле pipfile.lock
, после того, как pipenv выполнит команду lock
, эта зависимость обновится до последней версии (2.5.1).
Что я делаю не так?
Вы уверены, что устанавливаете его в Docker? Частой причиной конфликтов pipfile.lock является установка пакета локально, а не в Docker, и когда локальное окружение синхронизируется с Docker, оно переопределяет ваш pipfile.lock.
Предполагая, что вы используете docker-compose, вот как я устанавливаю свои пакеты:
docker-compose exec web pipenv install <package-name>
Я понял, в чем была моя проблема.
Я перечислил зависимости следующим образом: ~=2.4
, я думал, что это указывает не обновлять до 2.5
или выше, но это не так, это только говорит pipenv не обновлять до 3
или выше.
Чтобы остаться в версии 2.4
, я должен указать последний номер версии, например: ~=2.4.0
Таким образом, я говорю pipenv не обновляться с 2.4
.