我正在通过运行python main.py
(包含import cv2
语句)使用opencv模块在深度学习上运行代码,但始终会收到错误'ImportError: dynamic module does not define module export function (PyInit_cv2)'
。
我尝试重新安装anaconda并创建新的虚拟环境,但是所有结果都相同。这个问题的确使我非常困惑,并且我在Google上搜索了许多相关的问题,但没有一个起作用。我认为问题与环境有关,与代码无关,因为通过在python提示符下运行import cv2
可以得到相同的结果。更令人困惑的是,即使删除了opencv模块,我也遇到了同样的问题,但不是ModuleNotFoundError
。有人可以给我一些建议吗?非常感谢!
答案 0 :(得分:2)
我认为我找到了此错误的可能原因。
最近,我在一台服务器上配置了caffe环境,我下载了opencv-2.4.13的源代码并手动编译,将/usr/local/opencv-2.4.13/build/lib
添加到$PYTHONPATH
,并且caffe运行良好。之后,当我使用conda activate py35
(使用python3.5)进入我的虚拟环境之一时,在python提示符下尝试了import cv2
,得到了上面的错误。
我不确定,但我认为错误的原因是opencv-2.4.13编译了python2接口,因此无法由python3导入。 Python通过搜索sys.path中列出的目录来导入软件包,其中$PYTHONPATH
在当前工作目录之后排在第二位(This是一篇很棒的文章,介绍了python查找软件包的机制)。因此,当我们进入py35环境时, python将首先查找$PYTHONPATH
并在根目录中找到安装的opencv,而不是使用conda install opencv-python
在虚拟环境中找到opencv 。
因此有两种解决方案:
/usr/local/opencv-2.4.13/build/lib
中删除$PYTHONPATH
。对我都有用。
答案 1 :(得分:0)
类似的帖子,可能会有所帮助: ImportError: dynamic module does not define init function (initfizzbuzz)
您能否提供有关如何安装CV模块的信息?
答案 2 :(得分:0)
我遇到了同样的问题,这是由cv2.so
中的/usr/local/lib/python2.7/site-packages/cv2.so
文件引起的。在删除文件并使用命令sudo pip3 install opencv-python
之后,它就可以在python3上使用了。