gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 21:06:02 25 4
gpt4 key购买 nike

我试过conda search --outdated,有很多过时的包,例如scipy是0.17.1但最新的是0.18.0。但是,当我执行 conda update --all 时。它不会更新任何包。

更新 1

conda update --all --alt-hint

Fetching package metadata .......
Solving package specifications: ..........

# All requested packages already installed.
# packages in environment at /home/user/opt/anaconda2:
#

更新 2

我可以单独更新这些软件包。我可以做 conda update scipy。但是为什么我不能一次更新所有这些?

最佳答案

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

你是对的:

conda update --all

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

依赖冲突

但可能存在依赖冲突(阻止进一步升级)。如果它们发生,Conda 通常会非常明确地发出警告。

例如X 要求 Y <5.0,所以 Y 永远不会 >= 5.0

这就是你“不能”全部升级的原因。

正在解决

补充一点:也许它可以工作,但在 conda 中没有更新版本的 X 与 Y > 5.0 一起工作。可以使用 pip 安装,因为 pip 中提供了更多软件包。但是请注意,如果存在依赖冲突,pip 也会安装软件包,并且它通常会破坏您的 conda 环境,因为您无法再可靠地使用 conda 进行安装。如果您这样做,请作为最后的手段,并且在所有软件包都安装了 conda 之后。这更像是一种黑客攻击。

您可以尝试的一种安全方法是添加 conda-forge作为升级时的 channel (添加 -c conda-forge 作为标志)或您找到的包含您的软件包的任何其他 channel 如果您真的需要这个新版本。这样 conda 也会在这个地方搜索可用的包。

考虑您的更新:您可以分别升级它们,但这样做不仅包括升级,还包括另一个包的降级。说,添加到上面的例子:

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

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

(当然,这是一个教学示例,但实际上是一样的,通常只是具有更复杂的依赖关系和子依赖关系)

所以你仍然不能通过单独升级来升级它们;依赖关系是不能满足的,所以早晚,升级将再次降级已经升级的包。或者破坏包的兼容性(您通常不想要!),这只能通过显式调用 ignore-dependenciesforce-命令来实现。但这只是hack解决问题的方法,绝对不是普通用户的情况!


1 如果你真的想更新你安装的包,你通常不要。在基本环境中运行的命令将更新其中的包,但通常您应该使用虚拟环境(conda create -n myenv 然后conda activate myenv)。在这样的环境中执行 conda update --all 将更新 inside 这个环境的包。然而,由于基础环境也是一个环境,所以答案同样适用于这两种情况。

关于python - anaconda 更新所有可能的软件包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38972052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com