Conda 通道“默认”与“默认”

Rom*_*man 6 conda

在 condaenvironment.yml文件中,有什么区别

channels:
  - default
Run Code Online (Sandbox Code Playgroud)

channels:
  - defaults
Run Code Online (Sandbox Code Playgroud)

或者defaultanddefaults只是同义词?

编辑:从我到目前为止的观察来看,应该使用defaultss最后带有),不确定为什么 conda 允许default,但它似乎没有效果 - 就好像我根本没有指定任何通道一样。

mer*_*erv 3

是的,您是正确的,Conda 应该表现得好像您根本没有提供任何频道一样。然而,Conda 并不等同defaultdefaults.

除了在通道规范列表中显式提供 URL 之外,Conda 尝试从提供的字符串中推断出 URL,即

channels:
  - default
Run Code Online (Sandbox Code Playgroud)

会诱发

https://conda.anaconda.org/default
Run Code Online (Sandbox Code Playgroud)

这样一来,人们就可以轻松地在 Anaconda Cloud 上指定用户通道。在这种情况下,它会尝试从用户处获取信息default存在这样的帐户,但不托管任何包。1实际上,此 YAML 不提供任何包的通道。

那么,为什么会找到任何包呢?

出现这种情况是因为该conda env create命令仍然包含已配置的通道。因此,如果您有defaultsconda-forge包含在配置设置中(例如,在 中~/.condarc),Conda 还将在这些通道中搜索包。2因此,我们得到的行为就像channels:完全省略了该部分一样。


[1]:不幸的是,这会造成危险的仿冒。
[2]:实际上没有一种简单的方法可以覆盖命令中配置的通道conda env(请参阅Conda 问题)。