RuntimeError:针对API版本a编译的模块,但此版本的numpy为9

时间:2015-11-22 20:03:47

标签: python python-2.7 opencv numpy

代码:

import numpy as np
import cv

控制台:

>>> runfile('/Users/isaiahnields/.spyder2/temp.py', wdir='/Users/isaiahnields/.spyder2')
RuntimeError: module compiled against API version a but this version of numpy is 9
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
File "/Applications/Spyder-Py2.app/Contents/Resources/lib/python2.7/spyderlib/widgets/externalshell/sitecustomize.py", line 685, in runfile
execfile(filename, namespace)
File "/Applications/Spyder-Py2.app/Contents/Resources/lib/python2.7/spyderlib/widgets/externalshell/sitecustomize.py", line 78, in execfile
builtins.execfile(filename, *where)
File "/Users/isaiahnields/.spyder2/temp.py", line 9, in <module>
import cv
File "/Applications/Spyder-Py2.app/Contents/Resources/lib/python2.7/cv.py", line 1, in <module>
from cv2.cv import *
ImportError: numpy.core.multiarray failed to import
>>> 

系统信息:OS X El Capitan,Macbook Air,1.3 GHz Intel Core i5,8 GB 1600 HMz DDR3

我已经尝试更新numpy。我不得不将cv.py添加到Spyder-Py2中的python2.7文件夹中是否还需要添加其他内容?

15 个答案:

答案 0 :(得分:100)

将numpy升级到最新版本

pip install numpy --upgrade

答案 1 :(得分:15)

检查路径

import numpy
print numpy.__path__

对我来说这是/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy所以我把它搬到了一个临时的地方

sudo mv /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy \
/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy_old

然后下次我导入numpy的路径是/Library/Python/2.7/site-packages/numpy/init.pyc,一切都很顺利。

答案 2 :(得分:7)

这对我有用:

sudo pip install numpy --upgrade --ignore-installed

答案 3 :(得分:4)

您可能正在运行Mac默认(/ usr / bin / python),它在系统文件夹中安装了旧版本的numpy。让python使用opencv的最简单方法是使用brew将python和opencv安装到/ usr / local并运行/ usr / local / bin / python。

brew install python
brew tap homebrew/science
brew install opencv

答案 4 :(得分:2)

今晚我遇到了同样的问题。事实证明,我安装了多个numpy软件包。 /usr/lib/python2.7中安装了旧版本,/usr/local/lib/python2.7中安装了正确的版本。

此外,我有PYTHONPATH=/usr/lib/python2.7/dist-packages:/usr/local/lib/python2.7/dist-packages。 PYTHONPATH在正确的版本之前找到了numpy的旧版本,因此当在Python解释器中时,它会导入旧版本的numpy。

有一件事有助于打开python会话执行以下代码:

import numpy as np 
print np.__version__ 
print np.__path__

这应该告诉你Python正在使用哪个版本,以及它安装在哪里。

要解决此问题,我更改了PYTHONPATH=/usr/local/lib/python2.7/dist-packages:/usr/lib/python2.7/dist-packages。我还使用Hitchiker's Guide to Python设置了一个虚拟Python环境,特别是标题为&#34;低级别:virtualenv&#34; 。我知道我应该首先设置一个虚拟环境,但我很累并且很懒。嗯,经验教训!

(适用更新)

以防万一再次移动文档,以下是......的相关内容。

创建Python虚拟环境

通过pip安装virtualenv:

$ install virtualenv

测试安装:

$ virtualenv --version

可选地,使用环境变量VIRTUALENVWRAPPER_PYTHON来更改虚拟环境使用的python的默认版本,例如使用Python 3:

$ export VIRTUALENVWRAPPER_PYTHON=$(which python3)

(可选)设置环境变量WORKON_HOME以更改创建Python虚拟环境的默认目录,例如使用/opt/python_envs

$ export WORKON_HOME=/opt/python_envs

为项目创建虚拟环境:

$ cd my_project_folder
$ virtualenv my_virtual_env_name

激活您刚刚创建的虚拟环境。假设您还设置了WORKON_HOME=/opt/python_envs

$ source $WORKON_HOME/my_virtual_env_name/bin/activate

使用以下两种方法之一安装项目所需的任何Python包。

方法1 - 使用命令行中的pip进行安装:

$ pip install python_package_name1
$ pip install python_package_name2

方法2 - 使用requests.txt文件安装:

$ echo "python_package_name1" >> requests.txt
$ echo "python_package_name2" >> requests.txt
$ pip install -r ./requests.txt

可选,但强烈推荐,请安装virtualenvwrapper。它包含有用的命令,可以更轻松地使用虚拟Python环境:

$ pip install virtualenvwrapper
$ source /usr/local/bin/virtualenvwrapper.sh

在Windows上,使用以下命令安装virtualenvwrapper

$ pip install virtualenvwrapper-win

virtualenvwrapper的基本用法 创建一个新的虚拟环境:

$ mkvirtualenv my_virtual_env_name

列出所有虚拟环境:

$ lsvirtualenv

激活虚拟环境:

$ workon my_virtual_env_name

删除虚拟环境(小心!这是不可逆转的!):

$ rmvirtualenv my_virtual_env_name

我希望这有帮助!

答案 5 :(得分:2)

要解决此问题,请执行以下操作:

首先卸载numpy

sudo pip uninstall numpy

使用 安装numpy - no-cache-dir 选项

sudo pip install --no-cache-dir numpy

并指定任何特定版本,例如1.14.2

sudo pip install --no-cache-dir numpy==1.14.2

答案 6 :(得分:0)

对于那些使用anaconda Python的人:

conda update anaconda

答案 7 :(得分:0)

您可能需要检查matplotlib版本。

不知怎的,我安装了matplotlib的开发版本,导致了这个问题。降级到稳定版本修正了它。

还可以尝试python -v -c 'import YOUR_PACKAGE' 2>&1 | less查看问题发生的位置,以及错误上面的行是否可以为您提供一些提示。

答案 8 :(得分:0)

您可能还想查看$PYTHONPATH。我在~/.bashrc改变了我的命令,以便让另一个包工作。

检查路径:

    echo $PYTHONPATH

改变你的路径(我使用nano但你可以编辑另一种方式)

    nano ~/.bashrc

查找export PYTHONPATH ...

的行

进行更改后,请不要忘记

   source ~/.bashrc

答案 9 :(得分:0)

尝试启动Spyder时遇到了同样的错误。 &#34; RuntimeError:针对API版本0xb编译的模块,但此版本的numpy为0xa&#34;。 一旦我错误地修改了我的机器的numpy版本(我以为我在一个venv),就出现了这个错误。如果你使用的是带有conda的spyder,我的建议是只使用conda来管理包。

这对我有用:

conda install anaconda

(我的机器上有conda但没有anaconda) 然后:

conda update numpy

答案 10 :(得分:0)

由于文档不一致,我遇到了同样的问题。 这个页面说文档中的示例最适合python 3.x:https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_setup/py_intro/py_intro.html#intro,而这个安装页面包含指向python 2.7的链接,以及旧版本的numpy和matplotlib:https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_setup/py_setup_in_windows/py_setup_in_windows.html

我的设置是这样的:我已经安装了Python 3.6和3.5,但是由于OpenCv-python docs说它最适合2.7.x,我也安装了那个版本。在我安装了numpy之后(在Python27目录中,没有pip但是使用默认的提取器,因为pip不是默认的python 2.7安装的一部分,就像在3.6中一样),我遇到了这个RuntimeError: module compiled against API version a but this version of numpy is错误。我尝试了numpy和opencv的许多不同版本,但无济于事。最后,我只是删除了python27中的numpy(只删除了site-packages中的文件夹以及任何其他剩余的numpy命名文件),并使用pip no在Python3.6版本中安装了最新版本的numpy,matplotlib和opencv。问题。从那以后一直在运行opencv。

希望这能节省一些时间。

答案 11 :(得分:0)

以下命令对我有用:

conda install -c anaconda numpy

答案 12 :(得分:0)

虽然这个问题很老了,但我相信还有很多人面临着和我一样的问题。我在运行树莓派操作系统的树莓派微机上使用Python3时遇到了上述报错。

这可能是由于安装 Numpy 模块时缺少一些库。我按照 Numpy 网站上的建议解决了这个问题。 Solutions for Numpy Module Import Error

这个Numpy疑难解答网站信息量很大,提供了Windows、Anaconda、Raspberry等的跨平台解决方案。也许有人可以先按照这个Numpy官网的建议来解决错误。

答案 13 :(得分:-1)

这对我有用:

我的pip在升级后无法正常工作,所以我要做的第一件事就是使用

进行修复
sudo gedit /usr/bin/pip

更改行

from pip import main

from pip._internal import main

然后

 sudo pip install -U numpy

答案 14 :(得分:-1)

此命令解决了我的问题。

pip3 install --upgrade numpy