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

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

我尝试了大量的安装方法,但没有人解决了我的问题,我有terminal上的导入工作,但它也停止了。 任何人都可能有解决scheme?

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/

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

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

这个文件不存在。 我从谷歌代码复制自己。

如果没有提供cv.py

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

我安装了其他版本的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路径。 这也可能有助于找出什么是在你的情况造成冲突,以及如何最好为你解决它。

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

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

wget https://bootstrap.pypa.io/get-pip.py

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

python3.5 get-pip.py

现在为python3.5安装了pip,为了在python3.4中使用它,你需要在python3.5中调用它,像这样:

python3.5 -m点

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

python3.5 -m pip安装numpy