搜索后找不到,我必须在这里询问:
conda env
的工作原理是什么,这意味着水蟒如何处理环境?
为澄清起见,我想回答或参考以下问题:
envs/myenv
文件夹中保存了什么?
activate myenv
会发生什么?
conda install ...
会发生什么?
我在哪里可以找到此类信息?
答案 0 :(得分:4)
基本上,conda
环境复制了系统的结构,这意味着它将在其他目录中存储/bin
,/lib
,/etc
,/var
。这对于unix系统来说更明显,但是在Windows(DLLs
,libs
,Scripts
,...)下也是如此。
在official documentation中有更多详细信息。
这个想法是conda install PACKAGE
将从channel
(一个conda软件包存储库)中获取一个预编译的软件包,并将其安装在类似于系统的结构下。 conda
不会依赖于系统依赖性,而只会使用conda软件包在环境结构下安装该软件包的所有依赖项。
因此,在给定的时间点在不同的系统下安装相同的软件包应该可以可靠地进行相同的安装。
这是一种标准化二进制文件的方法,只能通过针对给定版本的库对每个程序包进行预编译来实现,这些库是作为conda环境的依赖项提供的。例如,conda-forge
和bioconda
通道依靠基于云的CI / CD管道来在相同且完全干净的系统映像上编译所有软件包。
Conda还存储有关这些软件包的元数据(版本,内部版本号,依赖项,许可证等),因此它能够解决相当复杂的依赖关系树并避免软件包/库不兼容。每次执行Solving...
时,就是conda install
步骤。
然后,当您conda activate ENV
时,conda将环境根$CONDA_PREFIX/bin
附加到PATH
上,这样系统中将找到该环境中安装的所有可执行文件(并且将使整个系统级过载安装相同的可执行文件)。
您可以想象它就像用环境中的文件临时替换系统可执行文件。
这是一个非常基本的解释,并非100%准确,而且肯定不完整。如果您想了解更多信息,请阅读文档,尝试使用conda
,并可能深入了解Conda-forge和Bioconda如何构建软件包,因为所有内容都托管在github。