导入错误:未找到名为cv2的模块。

7

我已经花了一整天的时间来解决这个错误,到处查找错误信息,但仍然不知道如何解决它。

在我的台式机上已经安装了OpenCV和cv2,但现在我需要在笔记本电脑上编程(出于移动原因)。 不幸的是,尽管我已经下载了OpenCV,但当我尝试导入cv2时,它会给我一个错误消息,"ImportError: No module named cv2"。

到目前为止,我最接近的进展是使用 "locate cv2" 命令查找到 "/usr/lib/python2.7/dist-packages/cv2.so" 文件。然后我进入 python shell 并运行 "import sys" 和 "sys.path.append('/usr/lib/python2.7/dist-packages')",当我询问 "'/usr/lib/python2.7/dist-packages' in sys.path" 时,它会返回 True。但是,当我尝试导入cv2时,它现在返回一个新的错误消息,"ImportError: numpy.core.multiarray failed to import"。我尝试解决这个错误,但也没有成功。

我已经尝试了在线论坛和留言板上的所有方法,但仍然无法解决这个问题。如果有任何帮助,将非常感激,因为我需要在本周末完成这个程序。


什么是操作系统?也许你安装了适用于Python 3的版本,但你使用的是Python 2,或者反之? - Marcin
2
你的笔记本电脑上是否安装了NumPy? - Mailerdaimon
@Marcin:我正在运行Ubuntu 14.04。 当我执行“python --version”时,它返回python 2.7.9。 但是,当我进入“/usr/lib/”时,我看到Python2.7、Python3和Python3.4。 - Alwin Hui
@Mailerdaimon 我相信是这样,但我不知道如何检查。 - Alwin Hui
3个回答

7

另一个可能原因是缺少OpenCV模块。在我的Mac OSX El Capitan [10.11.2 (15C50)]上,我在安装Anaconda时遇到了完全相同的错误,采用以下方法解决了这个问题:

conda install opencv

虽然这有助于解决:

ImportError: No module named cv2

它还引入了以下问题:
ImportError: numpy.core.multiarray failed to import

由于某种原因,numpy版本被切换回1.7.0。因此,执行以下操作可以解决问题:

conda update numpy

仔细检查:

import numpy
print numpy.__version__
1.10.2

现在一切都好了。

0

我目前正在使用Google VM(ubuntu 14.04)进行工作。在Python3.4版本上安装opencv是一项相当困难的任务。我想要为Python 3.4安装opencv,但每次它都会被安装在2.7版本上。

我将分享我所遵循的步骤,以帮助其他人解决这个问题。

第1步 按照openCv安装部分中提到的所有步骤进行操作,直到cmake。链接如下: https://docs.opencv.org/master/d7/d9f/tutorial_linux_install.html

注意:安装开始时提到的所有3个软件包。那个可选的也别忘了!!并且不要忘记更改您要安装的Python版本。

我执行了以下命令:

sudo apt-get install python3-dev python3-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

按照第2步进行cmake。

步骤2 在特定版本的Python(Ubuntu)中安装OpenCV,您必须使用路径设置默认值(PYTHON_DEFAULT_EXECUTABLE),指向Python的安装位置。您可以使用命令whereis python3.4(或您的版本)找到它。我的在/usr/bin/python3.4。

不要使用页面上提到的cmake,而是使用以下命令:

cmake -D CMAKE_BUILD_TYPE=Release -D BUILD_NEW_PYTHON_SUPPORT=ON -D BUILD_opencv_python3=ON -D HAVE_opencv_python3=ON -D PYTHON_DEFAULT_EXECUTABLE=/usr/bin/python3.4 ..

注意:不要忘记在PYTHON_DEFAULT_EXECUTABLE中更改您的Python版本和路径。

步骤3 按照链接中提到的剩余步骤进行,直到sudo make install。

希望这有所帮助。


-2
你缺少NumPy,它可以通过多种方式安装。以下是一些可能性,按照(我的个人)偏好顺序列出:
1)在虚拟环境中。请参见https://dev59.com/AGYr5IYBdhLWcg3w6OGd#19213369以了解如何执行此操作。
2)如果已安装pip,则在系统范围内:
pip install numpy

3) 通过系统范围内的软件包管理器进行安装。例如,在Ubuntu上:

apt-get install python-numpy

或在像 Fedora 这样的 YUM 系统上:

yum install numpy

听起来你的NumPy版本已经过时了。尝试按照以下步骤操作:对于2),尝试“pip install --upgrade numpy”,对于3),尝试“apt-get update; apt-get upgrade”。 - Velimir Mlaker
我刚刚尝试了你的两个建议,针对2和3。现在,当我尝试在Python shell中导入numpy时,它返回“Import Error: /usr/lib/python2.7/dist-packages/numpy/core/multiarray.so: undefined symbol: PyUnicodeUCS4_AsUnicodeEscapeString”。 - Alwin Hui
听起来你混合使用了不同版本的numpy,一个是通过“pip”安装的,另一个是通过“apt-get”安装的。我们尝试通过专注于方法#3并忘记方法#2来解决这个问题。首先删除你通过pip安装的那个版本:“pip uninstall numpy”,然后尝试从python shell导入模块。 - Velimir Mlaker
在执行了 "pip uninstall numpy" 并卸载了 numpy 后,我在 Python shell 上运行了 "import numpy"。现在它显示为 "ImportError: no module named numpy." - Alwin Hui
1
我尝试过那个方法,但是没有成功。然而,我卸载了Ubuntu并进行了一次干净的重新安装,只按照这些说明操作,结果成功了。 - Alwin Hui
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接