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.

Вернуться на верх