错误导入cv2:ImportError:numpy.core.multiarray无法导入

时间:2015-10-23 15:17:45

标签: python opencv ubuntu numpy

我是Ubuntu的新手,我正在尝试在Jupyter Notebook中使用OpenCV模块。

运行时出现错误消息:

import cv2

消息错误是:

---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
RuntimeError: module compiled against API version a but this version of numpy is 9

---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-20-72fbbcfe2587> in <module>()
----> 1 import cv2

ImportError: numpy.core.multiarray failed to import

我在stackoverflow上读过其他用户的一些类似问题。这个问题通常来自错误的numpy版本。我检查过,我使用的是numpy 1.9.2:

numpy.version.version
Out[22]:'1.9.2' 

根据我对其他帖子的理解,1.8及以上版本应该足够了。有没有人知道可能出现什么问题?

有关信息,我的Python / Anaconda版本是

print sys.version
2.7.10 |Anaconda 2.3.0 (64-bit)| (default, Sep 15 2015, 14:50:01) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)]

感谢您对此事的任何帮助!

3 个答案:

答案 0 :(得分:0)

在MacOS上安装OpenCV时收到了注释:

The following NEW packages will be INSTALLED:
    opencv: 2.4.8-np17py27_2
The following packages will be DOWNGRADED:
    numpy:  1.10.2-py27_0 --> 1.7.1-py27_2    
Proceed ([y]/n)? y

我收到了你提到的同样的ipython错误。在通常conda update anaconda之后,我现在处于numpy 1.10.1并且在我的ipython-notebook中导入了numpy和cv2。为什么你的会话会显示当前的numpy对我来说不清楚(这可能发生在conda update numpy之后,这可能会产生不一致的链接)。

答案 1 :(得分:0)

如果你在virtualenv中工作,你在virtualenv之外安装了opencv,那就是我的情况,请确保你在内部和外部都使用相同版本的numpy。

您可以使用以下命令强制pip安装精确版本,例如 1.10.0.post2

pip install numpy==1.10.0.post2

在virtualenv内外运行,然后再次尝试导入。

答案 2 :(得分:0)

在El-Capitan OS上,如果您按下命令

pip install -U numpy

很可能它不会升级numpy模块。原因是El-Capiton已经附带了一些python模块(例如六个),因此它不会允许你删除那些模块的旧版本并用新版本替换它(那就是&#34; - 上面命令中的U&#34;标志正在尝试)。由于系统完整性保护,它甚至不允许使用root权限。

所以为了克服这个问题,我目前正在使用virtualenv(安装和使用virtualenv:Article),在我的virtualenv中,我正在命令安装。现在,在virtualenv中,一切都对我很好。

PS:您可能还会在其他一些pip软件包安装中收到错误,这些软件包将尝试升级系统软件包(例如,在安装virtualenvwrapper时)。 所以要安装virtualenvwrapper hit pip install命令&#34; - ignore-installed&#34;标志。

pip install --ignore-installed package-name-here