2015-07-19 215 views
19

对于m,在OS X上,conda update --all经常降级库 - 以及更新许多。为什么conda更新降级某些库

这是平常的吗?或者可能在我的设置中?

今年早些时候,枕头已经好几个月了。

令人惊讶的是,今天它是几个HDF5相关的库,numba和llvmlite。

因此conda update numba将numba带回到最新版本,以此类推其他8个库,但为什么conda update --all无论如何都这样做?

回答

8

这是一个兼容性问题。 Anaconda是一套稳定的软件包。当你更新Anaconda时,你更新到这个稳定列表。

但是,当您更新单个软件包时,它们可能会导致与Anaconda发行版的其余部分不兼容,因此它们不被认为是稳定的。这就是为什么当你使用conda update --all时,它会让你进入最新的稳定蟒蛇发行版,它可能会或可能不会拥有你想要的单个软件包的版本。

在这里看到:https://github.com/ContinuumIO/anaconda-issues/issues/39

编辑:此行为发生了变化。它现在试图增加所有软件包的版本(除主版本/次版本之外的Python),这样任何软件包都不会相互兼容。

在这里看到:http://continuum.io/blog/advanced-conda-part-1#conda-update-all

+0

感谢Ringil--非常感谢。很惊讶,在Stackoverflow上看不到这个问题......我应该考虑在Continuum的github区域上看看。 –

+0

我不明白为什么这是公认的答案,这个问题甚至从来没有提到Anaconda meta-package?当通过miniconda使用conda时,不需要使用该功能。 –

+0

啊,它有一个anaconda标签。 –

6

一些库依赖于特定的低版本的兼容性目的。 conda update --all将尝试尽可能更新包,但它始终保持与每个包的元数据中的版本限制的兼容性。请注意,anaconda包在此处不起作用(假设您有最近版本的conda),因为conda update --all忽略它。

不幸的是,并不总是很容易看到什么取决于什么,但有一些技巧。一种方法是将每个软件包pin升级到您想要的版本并运行conda update --all。它应该产生一个令人无法理解的暗示,它会让你知道是什么导致了这个问题。另一种方法是搜索package metadata

对于numba,我可以建议这个问题可能与numbapro有关。有几个软件包依赖于hdf5。您可以使用conda info <package>来查看包的依赖关系(如conda info h5py)。

+0

谢谢Aaron(我给Ringil打了个勾号......你已经充满爱了:-)。 –

+0

Ringil的答案并不严格正确。正如我所指出的那样,'conda update --all'完全忽略了'anaconda'软件包(这种情况并非如此,这在过去造成了很多问题)。 – asmeurer

相关问题