Python 3.5 ImportError:动态模块没有定义模块导出函数(PyInit_cv2)

时间:2016-08-23 23:43:31

标签: python python-3.x opencv ubuntu

当我尝试将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/

5 个答案:

答案 0 :(得分:0)

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

这是cv.py我想的。但就我而言,

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

如果未提供cv.py

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

答案 1 :(得分:0)

我安装了其他版本的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路径。它也可能有助于找出导致您的情况发生冲突的原因以及如何最好地为您解决。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

答案 4 :(得分:-2)

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

  

wget https://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