conda env在引擎盖下做什么?

时间:2018-12-20 17:07:26

标签: python anaconda virtualenv conda

搜索后找不到,我必须在这里询问:

conda env的工作原理是什么,这意味着水蟒如何处理环境?

为澄清起见,我想回答或参考以下问题:

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

  • activate myenv会发生什么?

  • conda install ...会发生什么?

  • 我在哪里可以找到此类信息?

1 个答案:

答案 0 :(得分:4)

Conda envs

基本上,conda环境复制了系统的结构,这意味着它将在其他目录中存储/bin/lib/etc/var。这对于unix系统来说更明显,但是在Windows(DLLslibsScripts,...)下也是如此。 在official documentation中有更多详细信息。

Conda安装

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

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

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

Conda激活

然后,当您conda activate ENV时,conda将环境根$CONDA_PREFIX/bin附加到PATH上,这样系统中将找到该环境中安装的所有可执行文件(并且将使整个系统级过载安装相同的可执行文件)。 您可以想象它就像用环境中的文件临时替换系统可执行文件。

更多

这是一个非常基本的解释,并非100%准确,而且肯定不完整。如果您想了解更多信息,请阅读文档,尝试使用conda,并可能深入了解Conda-forgeBioconda如何构建软件包,因为所有内容都托管在github。