从conda-forge渠道安装带有conda的OpenCV,即使网页上显示4.11,也可以得到3.4.2版

时间:2019-09-12 21:11:24

标签: opencv conda

在运行Python 3.7.3的conda环境中的Ubuntu上运行

conda install -c conda-forge opencv 

即使https://anaconda.org/conda-forge/opencv表示版本4.11,我仍然得到OpenCV 3.4.2(先由import cv2然后由cv2._version__进行检查)。为什么?

请注意,我以前没有安装OpenCV(我运行conda uninstall opencv,并且已将其完全删除)

1 个答案:

答案 0 :(得分:2)

说明

Conda v4.7推出了新的依赖关系解决策略,可以解释这种现象。即,现在解决过程分为两个阶段

  1. 使用隐式--freeze-installed|--no-update-deps标志解决。如果可行,那就完成了。否则,请继续...
  2. 无限制求解(在Conda <4.7中默认为默认)。

这样做的原因是通过避免必须更改环境中的任何内容来提供更快的解决方案和安装体验。

在这种情况下发生了什么? OpenCV的依赖项要求之一在v4.1.1中可能比您所安装的要新,但是该依赖项的版本足以安装OpenCV 3.4.2。因此,唯一会改变的是添加opencv以及缺少的依赖项。从技术上讲,它仍然是“正确的”-您只要求“ Conda Forge的OpenCV ”-但这显然不同于以前的Conda求解器。


获取最新版本

选项:指定版本

如果您知道需要特定版本,则可以随时指定它

conda install -c conda-forge opencv=4.1.1

并且由于Conda无法在不更新您的环境中某些内容的情况下安装它,因此第一轮解决方案将失败,而完整解决方案将为您解决。

选项:跳过冻结

当然,您可能并不总是知道最新的版本号,也不想每次都必须在Anaconda Cloud上查找它。幸运的是,有一个--update-deps标志实际上跳过了第一个求解阶段,直接进入了完整求解。这将为您的系统安装最新版本,并更新任何依赖项。

conda install --update-deps -c conda-forge opencv