导入 CV2 时收到来自 lingnutls/'Hogweed' 的错误

Receive an error from lingnutls/'Hogweed' when importing CV2

我从未见过这样的错误,不知道从哪里开始。我用

安装了 opencv
conda install opencv

and am 运行 Ubuntu Linux 18.04 使用名为 fpn 的 conda 环境。我应该如何调试它?

Traceback (most recent call last):
  File "test.py", line 5, in <module>
    import cv2
ImportError: /home/s/miniconda3/envs/fpn/lib/python3.7/site-packages/../../././libgnutls.so.30: symbol mpn_add_1 version HOGWEED_4 not defined in file libhogweed.so.4 with link time reference

我不认为这是一个真正的解决方案,但是通过 pip 进行安装

pip install opencv-python

可以正常使用。不应该有办法用conda安装吗?

最近发布的 Conda opencv 包似乎有问题。我测试了all the 4.x releases,发现问题是从4.3开始出现的。除非你真的依赖 >=4.3,否则强制使用 4.3 之前的版本可以解决问题,

name: test
channels:
 - anaconda
 - conda-forge
dependencies:
 - python>=3.8
 - opencv<4.3

在我的案例中,这安装了 4.2.0。在 Python 中导入 cv2 就可以正常工作了。请注意,使用 conda update 对我不起作用,我仍然遇到错误,但我必须先 remove the environment and then re-create it我认为这种行为表明错误根源于 opencv 的某些依赖项,当使用 conda update 时未正确降级。

问题似乎发生在 conda-forge 和 anaconda 包混合使用时,它们不兼容。 我遇到了同样的问题;最终的问题是让 conda-forge 配置的优先级低于 anaconda。这导致在有选项时安装了不兼容的 anaconda 包。 这当然是个坏主意——因为 conda-forge 假设 anaconda 可用,但反之则不然