我可以将频道添加到特定的conda环境吗?

Ste*_*ell 24 python environment conda

我想在特定的conda环境中添加一个conda通道,但是当我使用时

conda config --add channels glotzer
Run Code Online (Sandbox Code Playgroud)

该频道现在可从我所有的conda环境中获得.除了从其他环境测试安装之外,该~/.condarc文件还具有以下内容:

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

我如何配置conda以便通道仅在特定环境中可用?

我确实在通道文档中发现,对于conda> = 4.1.0,将通道放在底部~/.condarc会阻止添加的通道覆盖核心包集.

默认情况下,conda现在优先于较低优先级通道的任何版本的优先级较高的通道中的包.因此,您现在可以安全地将频道放在频道列表的底部,以提供不在默认频道中的其他包,并且仍然确信这些频道不会覆盖核心包集.

我希望这可以防止大多数问题,除非在一个环境中你确实希望通过通道添加包来覆盖核心包.

Chr*_*ber 29

从conda 4.2开始,.condarc支持特定于环境的文件,您可以编写:

conda config --env --add channels glotzer
Run Code Online (Sandbox Code Playgroud)

将通道添加到活动环境的配置中.

[ 不确定是否--env在4.2中添加了标志.答案基于康达4.5.9 ]

  • 之后,“conda config --env --set channel_priority strict”也可能会很有用。 (5认同)
  • 您还可以 `conda config --env --appendchannelsglotzer` 将其添加为最后一个条目而不是第一个条目。 (3认同)

Ste*_*ell 6

目前,无法将通道添加到单个conda环境中.如果您不想将通道添加到全局~/.condarc文件,则应使用该选项从特定通道安装包:

conda install <some-package> -c glotzer
Run Code Online (Sandbox Code Playgroud)

  • 这不再是真的。自 conda 4.2 起就支持每个环境的 .condarc 文件。 (2认同)

Bal*_*Ben 5

您可以创建一个environment.yml包含conda环境规范的文件。完整的文档在这里,但基本设置如下:

name: EnvironmentName
channels:
    - conda-forge
    - glotzer
dependencies:
    - pip:
        - tensorflow
    - pandas=0.22.*
Run Code Online (Sandbox Code Playgroud)

要使用环境,请键入

conda env create -f environment.yml
conda activate EnvironmentName
Run Code Online (Sandbox Code Playgroud)

要在environment.yml更改或更新包时更新环境,

conda env update -f environment.yml
conda activate EnvironmentName
Run Code Online (Sandbox Code Playgroud)

  • 这不能回答问题。此外,`environment.yml` 文件中的通道仅用于创建环境,不会添加到环境的默认配置中(即没有为包含其通道的环境创建 `.condarc` 文件),因此安装其他软件包需要在命令行上手动指定频道。 (3认同)
  • 我只使用 `environment.yml` 文件创建环境,并且在非默认环境中,我从不使用 `conda install` - 我总是更新环境文件,然后是 `conda --env update`。这样,环境文件始终代表环境的当前状态,这使我的环境 100% 可移植——该文件包含重新创建它们所需的所有信息。 (2认同)

小智 5

您可以使用特定通道创建新环境:

conda create -n EnvironmentName -c ChannelName