Как обновить существующую среду Conda с помощью .yml файла

Как можно обновить существующую среду conda с помощью другого файла .yml? Это чрезвычайно полезно при работе с проектами, в которых есть несколько файлов требований, например base.yml, local.yml, production.yml и т.д.

Например, ниже base.yml файл base.yml с base.yml -f orge, conda и pip:

base.yml

name: myenv
channels:
  - conda-forge
dependencies:
  - django=1.10.5
  - pip:
    - django-crispy-forms==1.6.1

Фактическая среда создается с помощью: conda env create -f base.yml.

Позже, дополнительные пакеты должны быть добавлены в base.yml. Другой файл, скажем local.yml, должен импортировать эти обновления.

Предыдущие попытки сделать это включают в себя:

создание файла local.yml с определением импорта:

channels:

dependencies:
  - pip:
    - boto3==1.4.4
imports:
  - requirements/base. 

А затем выполните команду: conda install -f local.yml.

Это не работает. Какие-нибудь мысли?

Ответ 2

Алкамидный ответ находится на правильных строках, но я обнаружил, что Conda не может установить новые зависимости, если среда уже активна. Сначала деактивирование среды разрешает это:

source deactivate;
conda env update -f whatever.yml;
source activate my_environment_name; # Must be AFTER the conda env update line!

Ответ 3

Предлагаемый ответ является частично правильным. Вам нужно будет добавить опцию --prune, чтобы также удалить пакеты, которые были удалены из environment.yml. Правильная команда:

conda env update -f local.yml --prune