Зачем добавлять канал в среду conda? - PullRequest
2 голосов
/ 21 июня 2020

Можно добавить каналы (например, conda-forge) в conda через

conda config --add channels conda-forge

Для полноты, начиная с conda 4.2, можно добавлять каналы (например, conda-forge) в определенные среды c через

conda config --env --add channels conda-forge

( см. Также этот пост ).

Мне интересно, есть ли какие-либо другие соображения, почему можно добавить (или нет) канал в conda / специальная среда c conda, отличная от простого удобства установки пакетов без указания -c conda-forge?

Есть ли какие-либо преимущества / недостатки при добавлении каналов?

1 Ответ

2 голосов
/ 22 июня 2020

В основном это удобство - то есть команда conda install достаточно выразительна, чтобы указать любой приоритет канала. Например, можно указать рекомендуемые приоритеты каналов Bioconda вручную при каждой установке:

conda install -n metagenomics_env --override-channels -c conda-forge -c bioconda -c defaults kraken

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

conda activate metagenomics_env
conda config --env --add channels defaults
conda config --env --add channels bioconda
conda config --env --add channels conda-forge
...
conda install -n metagenomics_env kraken

Это может быть весьма полезно, когда у кого-то есть множество проектов, которые не способствуют установлению единого глобального приоритета канала.

Одна проблема, о которой следует знать, - это то, что выполняется conda env export всегда приводит к экспорту конфигурации глобального канала. Хотя идентификаторы сборки включены в environment.yml и обычно достаточно различны для захвата канала происхождения, если канал не входит в глобальную конфигурацию channels, то сборки не будут найдены, если система воссоздает env не имеет этого канала в своей конфигурации.

Дополнительное использование

Также стоит подчеркнуть, что флаг --env позволяет устанавливать каждый параметр конфигурации на основе env-specifici c, а не только для каналов. Это может быть полезно для некоторых крайних случаев, таких как указание ограничения подкаталога (например, win-32 vs win-64 ) или включение экспериментальных функций как pip_interop_enabled только в c envs.

...