【问题标题】:What's the purpose of the "base" (for best practices) in Anaconda?Anaconda 中“基础”(最佳实践)的目的是什么?
【发布时间】:2019-10-23 12:22:39
【问题描述】:

它说这是一个默认环境,但是“你不想把程序放到你的基础环境中”

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

【问题讨论】:

  • 你在哪里看到这个建议?
  • 很高兴看到 Conda 开发人员支持最小的 base 实践。我强烈鼓励这样做,因为它似乎是最稳定的长期,并且最大限度地减少了 Conda 必须解决过于复杂的依赖图。现在,如果 Anaconda 停止在 base.... 中安装所有内容就好了

标签: anaconda conda


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 在最新版本的 conda 中,conda 是一个 bash 函数,而不是特定的可执行文件(尽管我相信可执行文件仍然是为了向后兼容)。
  • 另外:在任何环境中安装的任何东西都是通过硬链接共享的,因此确实没有理由支持在 base 中安装某些东西以用于“继承”目的。在 base 中安装的唯一好处是,如果您允许自动激活,您可以在 shell 初始化时立即使用工具。就个人而言,我仍然安装gitjupyter 以及一些我每天使用的特定于域的命令行工具,以方便使用。
  • @RolandWeber 在您没有管理员权限的集群上,Conda 基本上可以成为您的本地包管理器。
  • @darthbith activate 不能作为命令实现。它需要修改当前shell的环境,而命令在子shell中执行或作为单独的进程运行。 activate 必须使用 source 调用,或者它必须是 shell 函数或别名。
  • @RolandWeber 这就是解释。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-09
  • 1970-01-01
相关资源
最近更新 更多