【问题标题】:Python 3.5 ImportError: dynamic module does not define module export function (PyInit_cv2)Python 3.5 ImportError:动态模块未定义模块导出函数(PyInit_cv2)
【发布时间】:2016-12-30 22:34:05
【问题描述】:

这就是我尝试将 cv2 导入 python3.5 IDLE 时得到的结果。 我正在使用 OpenCV 3.1.0 Python3.5.2 Ubuntu 16.04

我尝试了很多安装方法,但没有人解决我的问题,我在终端上进行了导入,但它也停止了。 任何人都可能有解决方案?

import cv2
Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    import cv2
ImportError: dynamic module does not define module export function (PyInit_cv2)

编辑:我按照此链接上的教程进行操作:

http://docs.opencv.org/3.0-last-rst/doc/tutorials/introduction/linux_install/linux_install.html

http://www.pyimagesearch.com/2015/07/20/install-opencv-3-0-and-python-3-4-on-ubuntu/

【问题讨论】:

    标签: python python-3.x opencv ubuntu


    【解决方案1】:

    对于python3,需要提供python一个init方法作为入口,

    我猜是cv.py。但就我而言,

    此文件不存在。我从google code复制了自己的。

    如果没有提供cv.py

    在 python3 中 import cv2 时可能会出现错误 ImportError: dynamic module does not define init function (PyInit_cv2)(在 python2 中没有这样的问题)。

    【讨论】:

    • 谢谢你的回答,它解决了终端的问题,但我仍然在IDLE中
    【解决方案2】:

    我在安装其他版本的 OpenCV 后遇到了这个问题(由于各种原因,其中一个安装了 ROS,它有自己的 OpenCV 版本)。这似乎引起了冲突。要确保 PyOpenCV 正确加载,请输入交互式会话并检查:

    import sys
    print(sys.path)
    

    你也可以在 IDLE 中尝试。

    cv2.cpython-35m-x86_64-linux-gnu.so 的路径应该出现在那里。如果没有,请将其插入路径:

    sys.path.insert(1, '<path to .../dist-packages with cpython so>')
    

    确保它位于可能导致冲突的任何其他选项之前。然后再试一次:

    import cv2
    

    它现在应该可以工作了,这意味着问题出在 python 路径上。它还可能有助于找出在您的案例中造成冲突的原因以及如何最好地为您解决冲突。

    【讨论】:

      【解决方案3】:

      我在使用 ROS 环境的计算机上工作时也遇到了这个问题。对我来说最简单的解决方案是通过注释掉该行并重新启动终端来不在 .bashrc 中获取 ROS 环境。

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

          首先你需要get-pip.py,它是安装pip的好工具,从来没有任何问题:

          wgethttps://bootstrap.pypa.io/get-pip.py

          然后你需要为 python3 安装 pip,我有 python3.5,但这适用于我相信的任何版本:

          python3.5 get-pip.py

          现在为 python3.5 安装了 pip,为了将它与 python3.4 一起使用,您需要像这样在 python3.5 中调用它:

          python3.5 -m pip

          所以如果你想安装 numpy,你会使用:

          python3.5 -m pip install numpy

          【讨论】:

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