这是当我尝试导入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的好工具,从来没有任何问题:
然后你需要安装python3,我有python3.5,但这将适用于任何版本,我相信:
python3.5 get-pip.py
现在为python3.5安装了pip,为了在python3.4中使用它,你需要在python3.5中调用它,像这样:
python3.5 -m点
所以如果你想安装numpy,你可以使用:
python3.5 -m pip安装numpy