conda env 在幕后做了什么?

Gul*_*zar 5 python virtualenv anaconda conda

搜索并没有找到后,我必须在这里问:

conda env引擎盖下是如何工作的,也就是说,anaconda 如何处理环境?

为了澄清,我想要一个答案或参考以下问题:

  • envs/myenv文件夹中保存了什么?

  • 会发生什么activate myenv

  • 会发生什么conda install ...

  • 我在哪里可以找到这些信息?

Fab*_*enP 5

康达环境

基本上,conda环境会复制系统的结构,这意味着它将存储/bin/lib/etc/var等目录。这对于 UNIX 系统来说更为明显,但在 Windows 下也有同样的概念(DLLs, libs, Scripts, ...)。更多详细信息请参见官方文档

康达安装

这个想法是从(conda 包存储库)conda install PACKAGE获取预编译的包,并将其安装在类似系统的结构下。channel不依赖系统依赖项,而是conda将在环境结构下安装此包的所有依赖项,仅使用 conda 包。因此,在给定时间点在不同系统下安装相同的软件包应该会产生可靠的相同安装。

这是标准化二进制文件的一种方法,只有通过针对给定版本的库预编译每个包才能实现,这些库作为 conda 环境的依赖项提供。例如,conda-forge通道bioconda依赖基于云的 CI/CD 管道在相同且完全干净的系统映像上编译所有包。

Conda 还存储有关这些包的元数据(版本、内部版本号、依赖项、许可证等),因此它能够解决相当复杂的依赖项树并避免包/库不兼容。就是Solving...每次执行的步骤conda install

康达激活

然后conda activate ENV,当您执行 时, conda 将环境根目录添加$CONDA_PREFIX/bin到 前面PATH,以便系统可以找到环境中安装的所有可执行文件(并且将超载同一可执行文件的系统范围安装)。您可以将其想象为暂时用环境中的可执行文件替换系统可执行文件。

更多的

这是一个非常基本的解释,不是 100% 准确,当然也不完整。如果您想了解更多信息,请阅读文档,进行实验conda,也许还可以深入了解Conda-forgeBioconda如何构建包,因为所有内容都托管在 github 上。