Как установить / обновить пакет с помощью pipenv без обновления остальных пакетов

#python #dependency-management #pipenv

#python #управление зависимостями #pipenv

Вопрос:

Я использую pipenv (версия 2018.11.26) для управления зависимостями в моем проекте. Иногда я хочу добавить или обновить только один пакет и не менять версии других пакетов. Как я могу этого добиться? Я пробовал оба

 pipenv update --selective-upgrade requests
  

и

 pipenv update --keep-outdated requests
  

но все же версии всех пакетов обновляются во время блокировки.

Pipfile amp; Pifile.lock: https://gist.github.com/jozo/d8351ed708e84c5ea0f69e82e585e5c6

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

1. Я думаю pipenv update --keep-outdated <pkg> , вам подойдет проблема с GitHub

2. Нет, это не работает @Maxime — все обновляется.

3. Согласно обсуждению в этом выпуске Github , на данный момент это невозможно.

Ответ №1:

Запуск pipenv install/uninstall/update с --keep-outdated pipenv предотвратит обновление несвязанных заблокированных пакетов. (Странно, что это не обычай по умолчанию).

Если вы не хотите, чтобы некоторые пакеты когда-либо обновлялись автоматически, вы должны закрепить их в своем Pipfile , например:

 [packages]
django = "==2.2"
djangorestframework = "==3.9.2"
  

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

1. --keep-outdated для меня это не выдает ошибку, но все равно обновляет все в pip-файле.

2. @Yokhen: Пожалуйста, предоставьте минимальный, воспроизводимый пример (возможно, в другом вопросе). На момент написания --keep-outdated работал так, как предполагалось для меня.

3. @EugeneYarmash keep-outdated не работает для конкретного пакета, как сообщается в этом выпуске . Похоже, на данный момент решения нет.

4. Для меня pipenv unistall --keep-outdated foobar удалено foobar из Pipfile , но не из Pipfile.lock

5. Как мне обновить закрепленные пакеты через pipenv?