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


76

码:

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文件夹中,还需要添加其他内容吗?

Answers:


110

将numpy升级到最新版本

pip install numpy --upgrade

8
这解决了问题,但是为什么呢?出现此问题的原因是安装了两个numpy。升级如何解决此问题?
马自达克

这不能解决我的问题:Requirement already up-to-date: numpy in /home/ubuntu/miniconda/lib/python3.6/site-packages
Guillaume Chevalier

如果您使用默认的python(其旧版本为numpy)导入手电筒,则可能会解决该问题。
Semih Korkmaz

这与试图导入新安装的pytorch当为我工作import torch
恐龙

在卸载并重新安装python之后,此方法对我
有用

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,一切都很好。


1
也为我工作。谢谢
Marcel Colomb

3
可行,但需要使用重新安装pip install numpy -I(大写i参数说要安装,而忽略当前已移动的安装)。
纪尧姆·谢瓦利尔

9

这为我工作:

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

这也为我工作。我在安装旧的numpy版本时遇到了同样的问题,而我无法移动或删除旧的numpy版本
Amit Singh

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

2
小心!对您来说,安装多个版本的python可能不是一个好主意。您可能最终会像这样的家伙:stackoverflow.com/questions/14117945/…–
Jakobovski

3

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

首先卸载numpy

sudo pip uninstall numpy

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

sudo pip install --no-cache-dir numpy

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

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

无法卸载“ numpy”。这是一个distutils安装的项目,因此我们无法准确确定属于该文件的文件,而这只会导致部分卸载。
tong

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 Python指南》(特别是标题为“ Lower level:virtualenv”的部分)设置了虚拟Python环境。我知道我应该首先设置一个虚拟环境,但是我很累并且很懒。哦,好,经验教训!

(更新)

以防万一文档再次移动,以下是有关的信息...

创建一个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

希望对您有所帮助!


您链接到的文档出现404错误。您可以更新链接吗?
user3243242

1
@ user3243242如您所愿!:-)
MikeyE

1

四元数模块遇到相同的问题。使用conda更新模块时,numpy版本不会更新到最后一个。如果通过pip命令pip install --upgrade numpy +通过pip install --user numpy numpy-quaternion强制安装四元数模块强制更新,则此问题已解决。可能是问题来自numpy版本。这里执行结果:

Python 2.7.14 |Anaconda custom (64-bit)| (default, Oct 15 2017, 03:34:40) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.

>>> import numpy as np
>>> print np.__version__
1.14.3
>>>

(base) C:\Users\jc>pip install --user numpy numpy-quaternion
Requirement already satisfied: numpy in d:\programdata\anaconda2\lib\site-packages (1.14.3)
Collecting numpy-quaternion
  Downloading https://files.pythonhosted.org/packages/3e/73/5720d1d0a95bc2d4af2f7326280172bd255db2e8e56f6fbe81933aa00006/numpy_quaternion-2018.5.10.13.50.12-cp27-cp27m-win_amd64.whl (49kB)
    100% |################################| 51kB 581kB/s
Installing collected packages: numpy-quaternion
Successfully installed numpy-quaternion-2018.5.10.13.50.12

(base) C:\Users\jc>python
Python 2.7.14 |Anaconda custom (64-bit)| (default, Oct 15 2017, 03:34:40) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.

>>> import numpy as np
>>> import quaternion
>>> 

0

对于使用anaconda Python的用户:

conda update anaconda

0

您可能要检查您的matplotlib版本。

我以某种方式安装了matplotlib的开发版本,这导致了该问题。降级到稳定版本可以解决此问题。

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


0

您可能还想检查一下$PYTHONPATH。我换了我的~/.bashrc以便让另一个包裹工作。

要检查您的路径:

    echo $PYTHONPATH

更改您的路径(我使用nano,但是您可以用其他方式进行编辑)

    nano ~/.bashrc

寻找与 export PYTHONPATH...

进行更改后,不要忘记

   source ~/.bashrc

0

尝试启动spyder时出现相同的错误。“ RuntimeError:针对API版本0xb编译的模块,但此numpy版本为0xa”。一旦我错误地修改了计算机的Numpy版本,就会出现此错误(我以为自己是venv)。如果您使用的是安装了conda的spyder,我的建议是仅使用conda来管理软件包。

这对我有用:

conda install anaconda

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

conda update numpy

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文档说它最适合2.7.x,所以我也安装了该版本。在我安装numpy之后(在Python27目录中,没有pip但具有默认提取器,因为pip不像3.6中那样是默认python 2.7安装的一部分),因此我在RuntimeError: module compiled against API version a but this version of numpy is出现错误。我尝试了numpy和opencv的许多不同版本,但均无济于事。最后,我只是从python27中删除了numpy(只需删除站点软件包中的文件夹以及任何其他以numpy命名的文件),然后使用pip no在Python3.6版本中安装了最新版本的numpy,matplotlib和opencv。问题。从此开始运行opencv。

希望这可以节省一些时间。



-1

这对我有用:

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

sudo gedit /usr/bin/pip

换线

from pip import main

from pip._internal import main

然后,

 sudo pip install -U numpy

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.