【发布时间】:2021-04-05 13:22:37
【问题描述】:
从 conda-forge 安装单个软件包时,我遇到了一个小而烦人的 conda 问题。通常我会运行这样的东西:
conda install -c conda-forge somepackage
这具有频繁使用 conda-forge 更新其他包的效果:几乎总是 ca-certificates、certifi 和 openssl;有时像 python、numpy 等主要软件包(全部来自 conda-forge)。我怀疑这些更新并不是绝对必要的;这些包使用一些逻辑按照“为了安装 somepackage 的最新版本,我需要 python>=3.8 但当前的 python 是 3.7;我可以使用 conda-forge,所以我会得到最新的 python来自 conda-forge,它比默认的更新”。
我想要完成的是:安装 any 版本的 somepackage(不一定是最新的),同时从 conda-forge 安装 尽可能少的。特别是,如果在保留已安装的软件包和升级之间进行选择,我总是想保留;如果在默认通道和 conda-forge 之间有选择,我总是想要默认(即使这些选择导致我尝试安装的新软件包的旧版本和/或它们的新依赖项 - 但不是如果它们导致无法安装)。
我该如何做到这一点?
【问题讨论】:
-
@jacub 很有帮助,但我认为它似乎并不能完全解决这个问题。 1. 当使用带有 -c 的频道(而不是 conda config --append channels 等)时,它在列表中的哪个位置?和 2. 通道优先级如何允许诸如“使用来自较低优先级通道的更高版本包,但前提是需要安装请求的包(而不是请求包的最新版本)”这样的场景
-
@jacub 对我来说可能最好的事情是首先使用 channel_priority=strict 和默认频道(尽管有时可能会使安装失败,否则可能会成功)。另一个问题,我如何告诉 conda“不要升级依赖项”(不管频道)
标签: python anaconda conda conda-forge