【问题标题】:Conda: How to ignore if a conda channel is not reachable? Ignore UnavailableInvalidChannel?Conda:如果无法访问 conda 通道,如何忽略?忽略 UnavailableInvalidChannel?
【发布时间】:2020-05-21 10:43:27
【问题描述】:

情况

在工作中,我们的网络中有一个私人 conda 频道,用于一些内部包。 由于我不想每次通过conda install 安装某些东西时都输入频道位置,因此我将其添加到.condarc 中的 condas 默认频道。

问题

显然,该频道仅在我公司的网络内可用。当我在网络之外并且想要安装例如numpy(因此在 conda 默认频道上可用的普通包)时,我收到以下错误,因为私人频道不可用:

conda.exceptions.UnavailableInvalidChannel: The channel is not accessible or is invalid.
  channel name: privateChannel
  channel url: file://address/in/companys/network
  error code: 404

独立于我要安装的软件包!

我在寻找什么

告诉 conda 忽略 UnavailableInvalidChannel 错误或类似问题的选项可以解决我的问题。因为我不想每次切换到另一个网络时都编辑我的.condarc...

通常我知道,如果我要安装一个我需要公司频道的内部包,那么我不介意 conda 会静默跳过内部频道,或者如果它不可用,则会对其他所有内容发出警告。如果 conda 不可用,我只是不希望它中止一切。


另一个相关的小问题:有没有办法定义频道别名?我知道channel-alias,但这只是更改了默认频道前缀。

【问题讨论】:

    标签: python conda


    【解决方案1】:

    解决方案

    我最近或多或少地偶然找到了自己问题的答案,并且不想自己保留它。

    为了防止 conda 在安装/更新来自其他可用渠道的软件包期间某个渠道不可用时失败,您必须在 .condarc 文件中设置以下参数:

    allow_non_channel_urls = True
    

    或者,您可以在终端中输入,而不是直接编辑您的.condarc

    conda config --set allow_non_channel_urls True
    

    conda 文档中没有解释关于使用.condarc conda 配置文件的名称不是很直观的参数allow_non_channel_urls。但是您可以在完整的.condarc 示例here 中找到它,而在其他任何地方都找不到。

    它有什么作用?

    官方解释是“警告,但不要失败,当 conda 检测到频道 url 不是有效频道时”。这意味着,例如,如果通道 URL 无法从您当前使用的网络访问(可能您不在公司网络之外),conda 只会打印警告,而不是中止安装包。这正是我想要的!

    警告可能看起来非常过分,因为它是针对每个架构打印的(linux-32win-64osx-64noarch 等)

    注意

    如果在可用频道上找不到您的包,Conda 仍然会失败并显示错误。但在这种情况下,您希望 conda 失败。

    【讨论】:

    • 非常有帮助。经过数小时的失败找到了您的解决方案...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-15
    • 2015-03-16
    • 1970-01-01
    • 2012-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多