从Conda中的特定频道中删除所有包

时间:2017-02-27 21:55:41

标签: anaconda conda

使用Conda时,我倾向于安装许多来自许多不同来源的软件包。事实证明,存在超级不兼容性。我想删除所有不是来自默认 conda-forge 频道的套餐。 我该如何做到这一点?

我意识到一种可能的解决方案是完全重新安装,但是首选替代方案。

1 个答案:

答案 0 :(得分:0)

重新创建导出的环境

如果您仍然希望安装软件包,并且至少尝试从受信任的渠道安装它们,则一种解决方案是导出环境,删除不需要的渠道,然后尝试仅使用您想要的频道。

要导出有问题的环境,

conda env export -n your_env --file env.yaml

如果您想从一开始就排除所有频道信息,则可以添加--ignore-channels标志。但是,由于听起来您只想排除特定频道,因此,只需编辑 env.yaml 文件,即可从YAML的 channels 部分中删除这些特定频道

您可能还需要添加--no-builds标志,以便跨具有不同构建配置的渠道识别软件包。

在拥有满意的环境YAML之后,可以使用以下方法重新创建环境:

conda env create -f env.yaml

如果您想强行安装在前一个之上,则可以使用--force标志。或者,采取较为保守的路线,并为环境提供一个新名称(例如-n your_env2)。

如果某些软件包在您信任的特定渠道中不可用,则可能必须从YAML文件中删除某些软件包。也许首先应该放弃那些软件包的某些版本要求,只是看看是否还有其他版本要求。