【问题标题】:Can I add a channel to a specific conda environment?我可以将频道添加到特定的 conda 环境吗?
【发布时间】:2023-03-13 07:40:01
【问题描述】:

我想将 conda 频道添加到特定的 conda environment 但是当我使用时

conda config --add channels glotzer

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

channels:
  - glotzer
  - defaults

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

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

默认情况下,conda 现在更喜欢来自较高优先级通道的软件包,而不是来自较低优先级通道的任何版本。因此,您现在可以安全地将频道放在您的底部 频道列表以提供不在 默认渠道,并且仍然确信这些渠道不会 覆盖核心包集。

我希望这将防止大多数问题,除非在一个环境中您确实希望通过通道添加的包覆盖核心包。

【问题讨论】:

  • 我的经验是(目前)这是不可能的。在这些情况下,我要做的是记住为所有安装/更新命令指定通道,例如 conda update -c conda-forge --all 效果很好。请注意,所有可能的软件包都将从conda-forge 安装。

标签: python environment conda


【解决方案1】:

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

conda config --env --add channels glotzer

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

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

【讨论】:

  • 这听起来很完美。您知道这是否已添加到文档中吗?可以加个链接吗?
  • 只需输入conda config -h
  • 您也可以conda config --env --append channels glotzer 将其添加为最后一个条目而不是第一个条目。
  • 在那之后,conda config --env --set channel_priority strict 也可能会派上用场。
  • 使用conda config --env --get 获取特定于环境的配置。
【解决方案2】:

更新

截至 2017 年 1 月,无法将频道添加到单个 conda 环境。截至 2020 年 12 月,这现在可以如 Christopher Barber's answer 中所述。


另类

如果您想从特定频道安装软件包,但不想将该频道添加到全局 ~/.condarc 文件中,则应使用从特定频道安装软件包的选项:

conda install <some-package> -c glotzer

【讨论】:

  • 这不再是真的。自 conda 4.2 起支持每个环境的 .condarc 文件。
【解决方案3】:

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

name: EnvironmentName
channels:
    - conda-forge
    - glotzer
dependencies:
    - pip:
        - tensorflow
    - pandas=0.22.*

要使用环境,请键入

conda env create -f environment.yml
conda activate EnvironmentName

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

conda env update -f environment.yml
conda activate EnvironmentName

【讨论】:

  • 这不能回答问题。此外,environment.yml 文件中的通道仅用于创建环境,不会添加到环境的默认配置中(即没有为包含其通道的环境创建 .condarc 文件),因此安装额外的包将需要在命令行中手动指定频道。
  • 我只使用environment.yml 文件创建环境,并且在非默认环境中,我从不使用conda install — 我总是更新环境文件,然后更新conda --env update。这样,环境文件始终代表环境的当前状态,这使我的环境 100% 可移植——该文件包含重新创建它们所需的所有信息。
  • 是的,这是一种很好的做法,但 Steven 想要将频道添加到现有环境中。至少这个问题暗示了这一点。
【解决方案4】:

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

conda create -n EnvironmentName -c ChannelName

【讨论】:

    猜你喜欢
    • 2021-11-03
    • 1970-01-01
    • 2021-03-11
    • 1970-01-01
    • 2018-11-27
    • 2018-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多