【问题标题】:How to fix 'ImportError: dynamic module does not define module export function (PyInit_cv2)' error in Python?如何修复 Python 中的“ImportError:动态模块未定义模块导出函数 (PyInit_cv2)”错误?
【发布时间】:2018-12-26 02:27:16
【问题描述】:

我正在通过运行python main.py(包含import cv2 语句)运行使用opencv 模块的深度学习代码,但总是收到错误'ImportError: dynamic module does not define module export function (PyInit_cv2)'

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

【问题讨论】:

    标签: python opencv import module


    【解决方案1】:

    我想我找到了这个错误的一个可能原因。 最近在一台服务器上配置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

    所以这个问题有两种解决方案:

    1. 改用 python2。
    2. $PYTHONPATH 中删除/usr/local/opencv-2.4.13/build/lib

    这一切都对我有用。

    【讨论】:

      【解决方案2】:

      类似的帖子,可能会有所帮助: ImportError: dynamic module does not define init function (initfizzbuzz)

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

      【讨论】:

      • 我以前读过那篇文章,但它似乎对我不起作用。我试过conda install opencvpip install opencv-python,但都返回相同的错误。
      【解决方案3】:

      我遇到了同样的问题,这是由/usr/local/lib/python2.7/site-packages/cv2.so 中的cv2.so 文件引起的。在我删除文件并使用命令sudo pip3 install opencv-python 后,它适用于python3。

      【讨论】:

        猜你喜欢
        • 2016-12-30
        • 1970-01-01
        • 1970-01-01
        • 2021-12-17
        • 2023-03-10
        • 1970-01-01
        • 2016-03-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多