Anaconda: любой способ указать, что проблемы с зависимостями препятствуют "обновлению конды" с последней версией модуля * absolute *?
Недавно я обнаружил, что моя numpy
установка (MacOS с anaconda) была на старой версии 1.11.x вместо последней 1.12.0, когда функция, задокументированная на их веб-сайте, не была найдена. Когда я conda update numpy
, мне скажут, что установка обновлена. Наконец, после попытки принудительной conda install numpy=1.12.0
обнаружилась ошибка, указывающая на то, что у пакетов были проблемы с зависимостями - оказалось, что для моей установки astropy
(которую я даже не использую) требуется numpy версия 1.11.x. После удаления astropy
и установки numpy
обновление до версии 1.12.0 прошло успешно.
Меня действительно беспокоит то, что анаконда не сделала никаких уведомлений о том, что игнорирует последнюю версию с numpy
из-за проблем с зависимостями. Есть ли способ принудительно отобразить какое-то предупреждение или флаг?
Редактировать: я вижу из этой ветки github, что в данный момент нет никакого способа сделать это. Хотя, возможно, до тех пор, пока разработчики не добавят эту функцию, есть немного хакерский способ сделать это с помощью скрипта BASH - что-то вроде запроса самой последней доступной версии, затем установки и сравнения двух версий версий.
Ответы
Ответ 1
Вы спрашиваете, можно ли написать код, который будет проверять каждую строку environment.yml
и сообщать, является ли версия foo = XYZ для foo актуальной, игнорируя другие депрессии в файле (например, astropy), которые могут конфликтовать и, следовательно, удерживать его.
Да.
Напишите script, который выполняет итерацию по каждой строке пакета, срывает и затем восстанавливает новую среду с помощью однострочной среды environment.yml(или даже без этого файла) и устанавливает последнюю версию отдельно. Прочитайте любую версию, которая окажется, сравните с целевой средой environment.yml и сообщите о любых несоответствиях. Если вы напишете script, который окажется полезным, отправьте его здесь.
Ответ 2
Я бы сказал, что использование pip
вместо conda
решит и эту проблему. При обновлении пакета с помощью pip install --upgrade <package_name>
он обновит его до последней версии, совместимой с вашей ОС и версией Python. Однако, если это обновление привело к тому, что установленный пакет перестал быть совместимым, pip
выдаст предупреждение, сообщающее именно это.