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.