anaconda更新所有可能的软件包吗?

anaconda更新所有可能的软件包吗?,第1张

anaconda更新所有可能的软件包吗?

TL; DR: 依赖项冲突: 更新一个 要求 (根据要求) 以降级另一个

你是对的:

conda update --all

实际上是要走的路1。Conda始终尝试将软件包升级到该系列中的最新版本(例如Python 2.x或3.x)。

依赖冲突

但是有可能存在依赖性冲突(这会阻止进一步升级)。如果发生,康达通常会非常明确地发出警告。

例如X要求Y <5.0,因此Y永远不会> = 5.0

这就是为什么您无法“全部”升级它们的原因。

解决

要补充:也许它可以工作,但是conda中没有使用Y >
5.0的X的较新版本。可以使用pip进行安装,因为pip中提供了更多软件包。但是请注意,如果存在依赖冲突,则pip还会安装软件包,并且通常会破坏conda环境,因为您不能再可靠地使用conda进行安装。如果这样做,请在所有软件包都已安装conda之后作为最后的方法。这是一个hack。

您可以尝试的一种安全方法是在升级时将conda-forge作为渠道添加(

-c conda-forge
作为标志添加),或者 如果确实需要此新版本,则可以 找到包含软件包的任何其他渠道。这样,conda也会在此位置搜索可用的软件包。

考虑您的更新 :您 可以分别 升级它们,但是这样做不仅包括升级,还包括其他软件包的降级。说,添加到上面的示例中:

X> 2.0要求Y <5.0,X <2.0要求Y> 5.0

因此,将Y> 5.0升级意味着将X降级到<2.0,反之亦然。

当然,这是一个教学示例,但实际上是相同的,通常只是具有更复杂的依赖性和子依赖性

因此,您仍然无法通过单独进行升级 来全部
升级;依赖关系是无法令人满意的,因此早晚要进行升级,升级将再次降级已经升级的软件包。或者破坏软件包的兼容性(通常您不希望这样做!),这只能通过显式调用
ignore-dependenciesforce -command来实现。但是,这仅仅是 破解 围绕问题的方式,绝对不是正常用户的情况下!


1如果您实际上要更新安装软件包,而通常 不这样做 。在基本环境中运行的命令将以此更新软件包,但是通常您应该使用虚拟环境(

conda create -nmyenv
然后使用
conda activate myenv
)。执行
conda update --all
这样的环境里将更新包
这样的环境。但是,由于基本环境也是环境,因此答案以相同的方式适用于两种情况。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5647795.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存