Как скопировать все пакеты Conda из одного env в базовый?

У меня есть среда под названием envname, но я бы хотел, чтобы ее пакеты были доступны в среде base. Как это сделать без переустановки каждого из них?


person Sam Lerman    schedule 15.05.2020    source источник


Ответы (1)


Слово предостережения

Будьте очень осторожны при использовании base env. Здесь находится пакет conda, поэтому, если он сломается, установка Conda прервется. Это очень утомительная ситуация для восстановления, поэтому я обычно не рекомендую использовать base env. для чего угодно, кроме запуска conda update -n base conda.

Тем не менее, следует попробовать только следующее для совместного использования двумя не базовыми env.


Копирование (связывание) пакетов через Envs

Один из способов - экспортировать env, назовем его foo, как YAML:

conda env export -n foo > foo.yaml

Затем попросите другой env, назовем его bar, попытаться установить все пакеты:

Предупреждение: Conda попытается выполнить следующую команду без запроса одобрения!

conda env update -n bar -f foo.yaml

Обратите внимание, что если в окружении foo есть конфликтующие пакеты, все они заменят все, что было в окружении bar (если это возможно). Чтобы быть осторожным, вам, вероятно, сначала следует провести сравнение, чтобы увидеть, что будет перезаписано. Например.,

conda env export -n bar > bar.yaml  # this is also useful as backup
diff -u bar.yaml foo.yaml

Главное, что нужно проверить, - это версия python. Они должны соответствовать младшей версии включительно (например, 3.6.x и 3.6.y допустимы; 3.6 и 3.7 - нет).

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

Удаление не будет иметь эффекта , если также не будет использоваться аргумент --prune (по сути, это полностью перезапишет bar на foo).

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

person merv    schedule 19.05.2020