如何修复';导入错误:动态模块未定义模块导出功能(PyInit_cv2)和x27;Python中的错误?

如何修复';导入错误:动态模块未定义模块导出功能(PyInit_cv2)和x27;Python中的错误?,python,opencv,import,module,Python,Opencv,Import,Module,我通过运行python main.py(包含import cv2语句)来运行一个关于深度学习的代码,该代码使用opencv模块,但总是得到错误'ImportError:dynamic module不定义模块导出函数(PyInit_cv2) 我试图重新安装我的anaconda并创建新的虚拟环境,但都得到了相同的结果。这个问题真的让我很困惑,我在谷歌上搜索了很多相关的问题,没有一个有效。我认为问题与环境有关,与代码无关,因为我只需在python提示符下运行import cv2,就得到了相同的结果。更

我通过运行
python main.py
(包含
import cv2
语句)来运行一个关于深度学习的代码,该代码使用opencv模块,但总是得到错误
'ImportError:dynamic module不定义模块导出函数(PyInit_cv2)

我试图重新安装我的anaconda并创建新的虚拟环境,但都得到了相同的结果。这个问题真的让我很困惑,我在谷歌上搜索了很多相关的问题,没有一个有效。我认为问题与环境有关,与代码无关,因为我只需在python提示符下运行
import cv2
,就得到了相同的结果。更令人困惑的是,即使在我删除opencv模块之后,我也会遇到同样的问题,但不是
ModuleNotFoundError
。有人能给我一些建议吗?非常感谢

类似的帖子,可能会有帮助:


您能否提供有关如何安装CV模块的信息?

我遇到了相同的问题,这是由
/usr/local/lib/python2.7/site packages/cv2.so中的
cv2.so
文件引起的。在我删除文件并使用命令sudopip3安装opencvpython之后,它对python3有效。

我想我找到了这个错误的一个可能原因。 最近,我在一台服务器上配置caffe环境,我下载了opencv-2.4.13的源代码并手动编译,将
/usr/local/opencv-2.4.13/build/lib
添加到
$PYTHONPATH
,caffe运行良好。之后,当我使用使用python3.5的
conda activate py35
进入我的一个虚拟环境时,在python提示符下尝试导入cv2
,得到了上面的错误

我不确定,但我认为错误的原因是opencv-2.4.13编译了一个python2接口,因此它不能被python3导入。Python通过搜索sys.path中列出的目录导入包,其中
$PYTHONPATH
位于当前工作目录之后的第二位(这是一篇介绍Python查找包机制的优秀文章)。因此,当我们进入py35环境时,python将首先查找
$PYTHONPATH
并查找安装在根目录上的opencv,而不是使用
conda install opencv python
在虚拟环境中查找opencv

因此,这个问题有两种解决方案:

  • 改用python2
  • $PYTHONPATH
    中删除
    /usr/local/opencv-2.4.13/build/lib

  • 这些都对我有用。

    我以前读过那篇文章,但它似乎对我不起作用。我尝试了
    conda安装opencv
    pip安装opencv-python
    ,但都返回了相同的错误。