使用 conda 降级和升级 python 个库
Downgrading and upgrading python libraries using conda
我经常使用 conda 安装 python 包,有时这涉及降级现有已安装的包。之后,我再次升级降级包到最新版本。
例如
conda install -c conda-forge iris
将 numpy 从 1.11.x 降级到 1.10.4。稍后,我 conda update numpy
回到 1.11.x
这样做可以吗,还是以后会导致一些微妙的问题?
tl;博士;
可能不会,因为 numpy 1.10 -> 1.11
不是一个巨大的飞跃。
推荐方法
我建议不要让 conda 匹配每个包的正确版本。您可能会得到错误的结果或崩溃。
更长的解释
iris
的配方是使用 numpy 1.10 构建的,因此如果您将 numpy 强制回 1.11,您可能会遇到以下问题:
- 崩溃:如果
iris
是针对 NumPy 编译的(使用其 C Api)
- 错误的结果:如果
iris
使用了一个API numpy changed between versions
- python 异常:如果
iris
使用API numpy,其中实现在版本之间发生了变化。
我知道最近 numpy 要求 numpy 数组的 索引 只能是 整数 。这破坏了一些代码。我不记得是哪个版本的 numpy 做到的。
所有包都是如此,不仅是 numpy。一些库保持 API and/or 版本之间的 ABI 兼容性,其他库则不。
总而言之,numpy具有相当稳定的API。我真的无法回答它的 ABI,因为我不知道。
我经常使用 conda 安装 python 包,有时这涉及降级现有已安装的包。之后,我再次升级降级包到最新版本。
例如
conda install -c conda-forge iris
将 numpy 从 1.11.x 降级到 1.10.4。稍后,我 conda update numpy
回到 1.11.x
这样做可以吗,还是以后会导致一些微妙的问题?
tl;博士;
可能不会,因为 numpy 1.10 -> 1.11
不是一个巨大的飞跃。
推荐方法
我建议不要让 conda 匹配每个包的正确版本。您可能会得到错误的结果或崩溃。
更长的解释
iris
的配方是使用 numpy 1.10 构建的,因此如果您将 numpy 强制回 1.11,您可能会遇到以下问题:
- 崩溃:如果
iris
是针对 NumPy 编译的(使用其 C Api) - 错误的结果:如果
iris
使用了一个API numpy changed between versions - python 异常:如果
iris
使用API numpy,其中实现在版本之间发生了变化。
我知道最近 numpy 要求 numpy 数组的 索引 只能是 整数 。这破坏了一些代码。我不记得是哪个版本的 numpy 做到的。
所有包都是如此,不仅是 numpy。一些库保持 API and/or 版本之间的 ABI 兼容性,其他库则不。
总而言之,numpy具有相当稳定的API。我真的无法回答它的 ABI,因为我不知道。