代码:
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文件夹中是否还需要添加其他内容?
答案 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