2016-08-23 172 views
2

这就是我在尝试将cv2导入python3.5 IDLE时所得到的结果。 我正在使用OpenCV 3.1.0 Python3.5.2 Ubuntu 16.04Python 3.5 ImportError:动态模块没有定义模块导出函数(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/

回答

0

对于python3,您需要提供蟒蛇一个init方法为入口,

这在cv.py我猜。但在我的情况下,

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

如果未提供cv.py

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

+0

谢谢你的答案,它解决了终端的问题,但我仍然在IDLE中 –

0

我安装了其他版本的OpenCV后(出于各种原因,其中一个安装ROS,它有自己的OpenCV版本),我遇到了这个问题。看来这造成了冲突。为了确保PyOpenCV被加载正确输入一个交互式会话,并检查:

import sys 
print(sys.path) 

你可以试试里面空闲也是如此。

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

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

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

import cv2 

它现在应该工作,这将意味着问题是python路径。它也可能有助于弄清楚在你的案例中是什么造成了冲突,以及如何最好地为你解决冲突。

-1

首先,你需要get-pip.py,它的安装PIP一个伟大的工具,从来没有任何问题:

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

然后,你需要安装PIP为python3,我有python3.5但这对于任何版本,我相信工作:

python3.5 get-pip.py

现在PIP安装了python3.5,为了与你需要python3中调用它python3.4使用它。5这样的:

python3.5 -m pip

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

python3.5 -m pip install numpy

0

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

相关问题