Anaconda 中“基础”(最佳实践)的目的是什么?

Gol*_*ame 11 anaconda conda

它说这是一个默认环境,但“尽管如此,您不想将程序放入您的基本环境中”

那么我到底应该用它做什么呢?我创建的其他环境是否继承自基础?

Rol*_*ber 13

基本环境是conda安装本身的地方。最好使用 Miniconda,并将您想要的所有东西安装到单独的环境中。

其他环境不从基础环境继承包。但是bin/基本环境的目录位于可执行文件的搜索路径中。因此,如果您conda从任何环境(通常没有安装 conda)内部调用,则会使用来自基本环境的环境。

如果您将其他可执行文件安装到基本环境中,则可以从您的其他环境中调用它们。但是,您将很难区分您可以调用的事物实际上是在您的环境中还是在基本环境中。
因此,最好只conda在基础环境中使用。也许还有其他通用工具,例如gitmake,如果您使用 conda 安装那种工具。但是由您的 Python/R/任何代码导入的包不属于基本环境。

如果您使用相同的包创建多个环境,请不要担心磁盘空间。conda在将相同的包硬链接到多个环境以节省空间方面做得非常好。

完整的 Anaconda 安装程序将大量内容放入基本环境中。起初这似乎很方便,但是当您开始创建新环境时,您会遇到我提到的问题。你可以从你的新环境调用东西,尽管它没有安装在那里。使用 Miniconda 避免了这种情况,代价是必须在实际使用东西之前创建一个新环境。但是,有一个 anaconda 元包,您可以安装它以通过一个命令获取“大量内容”。

  • 另外:在任何环境中安装的任何东西都是通过硬链接共享的,因此确实没有理由为了“继承”目的而赞成在 **base** 中安装某些东西。在 **base** 中安装的唯一优势是,如果您允许自动激活,您可以在 shell 初始化时立即使用工具。就我个人而言,我仍然安装 `git`、`jupyter` 和一些我每天使用的特定于域的命令行工具,以方便使用。 (5认同)
  • @darthbith `activate` 不能作为命令实现。它需要修改当前 shell 的环境,而命令是在子 shell 中执行或作为单独的进程运行。`activate` 必须使用 `source` 调用,或者它必须是 shell 函数或别名。 (2认同)