Как узнать, какой пакет требует понижения версии других моих пакетов

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

conda install IPython scipy numpy PIL scikit-image matplotlib tensorflow keras

Однако теперь conda говорит мне, что

The following packages will be DOWNGRADED:

  certifi                                 2018.11.29-py36_0 --> 2018.11.29-py27_0
  pip                                         19.0.3-py36_0 --> 19.0.3-py27_0
  python                                   3.6.8-haf84260_0 --> 2.7.15-h8f8e585_6
  setuptools                                  40.8.0-py36_0 --> 40.8.0-py27_0
  wheel                                       0.33.1-py36_0 --> 0.33.1-py27_0

Что что?! Питон 2.7.15? Ни за что. Кроме того, проект README содержит «инструкции» по запуску кода с Python 3.6, поэтому теоретически код должен быть совместимым с Python 3.6. Есть ли способ точно определить, какой именно пакет и/или комбинация пакетов вызывают понижение версии?

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

https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html#creating-an-environment-with-commands

Установите все программы, которые вы хотите в этой среде, одновременно. Установка одной программы за раз может привести к конфликту зависимостей.


PS вывод команды conda install на самом деле намного длиннее, чем тот, который я включил здесь. Я скопировал только часть DOWNGRADE, потому что это единственное, что меня беспокоит, но, конечно, если вы хотите, я могу включить полный многостраничный вывод.


person DeltaIV    schedule 05.03.2019    source источник
comment
Ну, первый шаг - установить пакеты отдельно (conda install IPython, conda install scipy и т. д.)   -  person murksiuke    schedule 05.03.2019
comment
@murksiuke, но, как я уже писал, документы conda прямо не рекомендуют этого делать.   -  person DeltaIV    schedule 05.03.2019
comment
не устанавливайте его, а просто запустите команду отдельно, посмотрите, сможете ли вы сузить ее до того, какой пакет это делает.   -  person Paritosh Singh    schedule 05.03.2019
comment
@ParitoshSingh, вы имеете в виду, что я запускаю команду, а затем, когда она просит меня proceed [y/n], я говорю «нет», верно?   -  person DeltaIV    schedule 05.03.2019
comment
конечно. инструкции и рекомендации хороши, если они работают. Если они начинают что-то ломать, можно копнуть глубже или отклониться.   -  person Paritosh Singh    schedule 05.03.2019
comment
@ParitoshSingh хорошо. Судя по всему, виноват пакет PIL. Я попытаюсь понять, что делает этот пакет PIL, и работает ли код без него.   -  person DeltaIV    schedule 05.03.2019
comment
это может помочь . Однако лично, если вам нужно работать с изображениями, вы можете просто использовать вместо этого open-cv. Впрочем, это решать вам. Если вы работаете в Windows, вы можете использовать колеса для Python 3 PIL.   -  person Paritosh Singh    schedule 05.03.2019
comment
@ParitoshSingh большое спасибо за ваш ответ: я на Mac. Ваша ссылка говорит использовать pip3 install pillow, если я правильно ее интерпретирую. Я все равно попробую сделать conda install pillow и посмотреть, работает ли он, но если он снова попросит меня перейти на более раннюю версию, я попробую с pip3. Что касается open-cv, то я мало знаю и о open-cv, и о pillow: если вы говорите, что первое лучше второго, я вам верю. Тем не менее, я твердо убежден, что первое, что нужно сделать, получив устаревший код, — это заставить его работать с минимальными модификациями кода. Таким образом, если вы сильно 1/   -  person DeltaIV    schedule 05.03.2019
comment
2/ выступают за то, чтобы я заменил все вызовы pillow (PIL) вызовами open-cv, я бы не хотел пока вводить дополнительную энтропию в код.   -  person DeltaIV    schedule 05.03.2019
comment
Давайте продолжим обсуждение в чате.   -  person Paritosh Singh    schedule 05.03.2019