Что делает conda env под капотом? - PullRequest
0 голосов
/ 20 декабря 2018

После поиска и не нахождения, я должен спросить здесь:

Как conda env работает под капотом, что означает, как anaconda обрабатывает окружение?

Чтобы уточнить, я бы хотелответ или ссылка на такие вопросы, как:

  • Что находится в папке envs/myenv?

  • Что происходит при activate myenv?

  • Что происходит при conda install ...?

  • Где я могу найти такую ​​информацию?

1 Ответ

0 голосов
/ 21 декабря 2018

Conda envs

По сути, conda среды копируют структуру вашей системы, то есть она будет хранить /bin, /lib, /etc, /var среди других каталогов.Это более очевидно для систем Unix, но та же самая концепция верна для окон (DLLs, libs, Scripts, ...).Подробнее в официальной документации .

Установка Conda

Идея состоит в том, что conda install PACKAGE будет извлекать предварительно скомпилированный пакет из channel (хранилище пакетов conda)и установите его под эту системную структуру.Вместо того, чтобы полагаться на системные зависимости, conda установит все зависимости этого пакета в структуре среды, используя только пакеты conda.Таким образом, установка одного и того же пакета в определенный момент времени в разных системах должна привести к надежно идентичным установкам.

Это способ стандартизации двоичных файлов, и он достигается только путем предварительной компиляции каждого пакета с данными версиями библиотек, чтопоставляются как зависимости от среды conda.Например, каналы conda-forge и bioconda используют облачные конвейеры CI / CD для компиляции всех пакетов на идентичных и полностью чистых образах системы.

Conda также хранит метаданные об этих пакетах (версия, номер сборки), зависимости, лицензии, ...) так что он способен решать довольно сложные деревья зависимостей и избегать несовместимости пакетов / библиотек.Это шаг Solving... каждый раз, когда вы выполняете conda install.

Конда активирует

Затем, когда вы conda activate ENV, Конда добавляет корень среды $CONDA_PREFIX/bin к PATH, поэтомучто все исполняемые файлы, установленные в среде, будут обнаружены системой (и будут перегружать общесистемную установку того же исполняемого файла).Вы можете представить себе это как временную замену системных исполняемых файлов на исполняемые из среды.

Подробнее

Это очень простое объяснение, не на 100% точное и, конечно, не полное,Если вы хотите узнать больше, прочитайте документацию, поэкспериментируйте с conda и, возможно, подробно рассмотрите, как Conda-forge и Bioconda делают сборки пакетов, каквсе размещено на github.

...