Как остановить установку pip, если есть конфликты зависимостей пакетов?

Я сделал pip install tensorflow-gpu==1.12.3, потому что мой графический процессор может поддерживать только CUDA 9, а последний tensorflow-gpu==1.14.0 требует как минимум CUDA 10. Одна из зависимостей пакета — tensorboard.

Я хочу сделать pip install tensorflow. Однако последняя версия предупреждает, что необходимо установить более новую версию tensorboard, а затем автоматически удаляет существующую версию и устанавливает более новую. Есть ли способ остановить пип или, по крайней мере, запросить подтверждение вместо того, чтобы действовать самостоятельно в такой ситуации? Я пытаюсь выяснить, какая совместимая версия tensorflow не требует более новых версий зависимостей пакетов, общих с tensorflow-gpu.

Изменить

хорошо, просто чтобы уточнить, это не вопрос, специфичный для тензорного потока, я просто использую его в качестве примера, потому что я просто делаю это прямо сейчас.

Обобщая: я установил более старую версию пакета A, которая зависит от более старой версии пакета B. Я хочу установить пакет C, который также зависит от пакета B. Однако для последней версии C требуется последняя версия пакета. версия B. Когда я пытаюсь установить C, он автоматически удаляет старую версию B и устанавливает новейшую версию. Как мне остановить его от этого?

Прямо сейчас мой единственный обходной путь — установить версию C, подождать, пока он что-то автоматически удалит, затем прервать установку C и переустановить версию пакета зависимостей, который был удален. Затем я перехожу к следующей более старой версии C и повторяю. В общем, методом проб и ошибок.

Есть ли более правильное и элегантное решение? Я согласен с тем, что он выдает предупреждение о том, что C требует более новой версии B, а затем завершает работу в этот момент или запрашивает подтверждение перед тем, как приступить к удалению, вместо того, чтобы делать это автоматически без запроса.

Я использую PyCharm venv, так что, в качестве альтернативы, я также в порядке, если есть способ отменить последние изменения в среде, то есть удалить C и любые новые установленные пакеты зависимостей, вернувшись к списку установленных пакетов до того, как я выполнил pip install C.

Надеюсь, это не звучит слишком запутанно. ????


person thegreatjedi    schedule 07.09.2019    source источник


Ответы (1)


Я никогда не работал с tensorflow, поэтому я не могу помочь вам с этой частью, но я могу предложить вам использовать виртуальные среды при тестировании вещей и не рисковать сломать систему Python или обновить пакеты, которые вы хотите в конкретной версии.

python -m venv env для создания виртуальной среды под названием env. source env/bin/activate, чтобы сделать виртуальную среду активной, и deactivate, чтобы выйти из нее.

Что касается перезаписи старых пакетов, я не нашел ни опций для запроса установки новой версии, ни опции игнорирования требований для определенного пакета. Вероятно, это связано с тем, что разработчики могут указать, какая версия зависимостей требуется, и, таким образом, если pip обнаружит устаревший пакет, пакет, который вы хотите установить, вероятно, не будет использоваться с ним.

Однако вы можете попробовать установить новейшую версию tensorflow и позволить ей установить необходимые требования, а затем просто удалить их с помощью pip uninstall PACKAGE-NAME и установить нужную версию с помощью pip install PACKAGE-NAME==x.x.x.

Кроме того, вот руководство, объясняющее установку tensorflow с CUDA 9. Кажется, они используют версию 1.8 для CUDA 9.2 и 1.7 для CUDA 9.1.

person papercut    schedule 07.09.2019
comment
Ну, честно говоря, это не вопрос, специфичный для тензорного потока, я просто использую его в качестве примера, потому что это то, что я пытаюсь сделать прямо сейчас. И так получилось, что я на самом деле делаю это в своем PyCharm venv, поэтому я покрыл эту виртуальную среду. - person thegreatjedi; 07.09.2019
comment
Я понимаю. Я предлагаю вам попробовать шаги, которые я описал в последних двух абзацах, и рассказать нам, как все прошло. - person papercut; 07.09.2019
comment
Есть ли способ проверить список зависимостей + версий для данного пакета через pip или что-то в этом роде? Предпочтительно перед установкой, но если единственные возможные способы должны иметь уже установленный пакет, я думаю, я могу с этим смириться. Если есть такой способ, я думаю, он поможет мне справиться с моей проблемой. - person thegreatjedi; 07.09.2019
comment
Это должно быть написано где-то в исходном коде. Ищите файл requirements.txt, внутри прописаны имена и версии пакетов (может быть и что-то еще) или внутри файла setup.py (однако вполне вероятно, что для поиска требований используется функция find_packages). Примечание: возможно, что requirements.txt отсутствует в исходном коде. - person papercut; 07.09.2019
comment
Я только что обнаружил, что вы можете сделать pip install --no-deps. Я думаю, это может решить вашу проблему - person papercut; 07.09.2019