Как можно обновить существующую среду conda другим файлом .yml. Это чрезвычайно полезно при работе над проектами, в которых есть несколько файлов требований, т. Е. И base.yml, local.yml, production.yml
т. Д.
Например, ниже представлен base.yml
файл с пакетами conda-forge, 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
.
Это не работает. Есть предположения?
Ответы:
Попробуйте использовать conda env update :
Или без необходимости активировать среду (спасибо @NumesSanguis):
источник
-f
и не нуженfile.yml
. Удаление знака равенства заставит завершение табуляции работать с.yml
именем файла.--name env_name
чтобы игнорировать любойname: foo
тег вlocal.yml
. Также предотвращает необходимость сначала активировать myenv. Полная команда:conda env update --name env_name --file local.yml
От: stackoverflow.com/a/45525593/3399066 комментарийПредлагаемый ответ частично верен. Вам нужно будет добавить параметр --prune, чтобы также удалить пакеты, которые были удалены из environment.yml. Правильная команда:
источник
Ответ alkamid находится в правильных строках, но я обнаружил, что Conda не может установить новые зависимости, если среда уже активна. Деактивация среды сначала решает эту проблему:
источник
-n <environment name>
, но по умолчанию, похоже, он работает с ожидаемой средой (возможно, последней активной или просто выбранной средой по умолчанию)