RuntimeError:针对 API 版本 a 编译的模块,但这个版本的 numpy 是 9
Posted
技术标签:
【中文标题】RuntimeError:针对 API 版本 a 编译的模块,但这个版本的 numpy 是 9【英文标题】:RuntimeError: module compiled against API version a but this version of numpy is 9 【发布时间】:2016-02-24 21:06:56 【问题描述】:代码:
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 文件夹中,还有什么需要添加的吗?
【问题讨论】:
【参考方案1】:我在使用import pyopencl
时遇到了同样的问题,我不想升级 numpy,因为 tensorflow 需要旧版本的 numpy,所以我简单地解决了:
python -m pip uninstall pyopencl && python -m pip install pyopencl
这种方式 pyopencl 配置了现有的 numpy 版本并解决了错误。
【讨论】:
【参考方案2】:虽然这个问题很老了,但我相信仍然有很多人面临着和我一样的问题。在树莓派微机上使用Python3时遇到了上述报错,运行在树莓派操作系统上。
这可能是由于安装 Numpy 模块时缺少一些库。我按照 Numpy 网站中的建议解决了这个问题。 Solutions for Numpy Module Import Error
这个 Numpy 故障排除网站信息量很大,提供了 Windows、Anaconda、Raspberry 等跨平台解决方案。也许有人可以先按照这个 Numpy 官网的建议来解决错误。
【讨论】:
【参考方案3】:以下命令对我有用:
conda install -c anaconda numpy
【讨论】:
【参考方案4】:这个命令解决了我的问题。
pip3 install --upgrade numpy
【讨论】:
【参考方案5】:要解决问题,请执行以下操作:
先卸载numpy
sudo pip uninstall numpy
使用 --no-cache-dir 选项
安装numpysudo pip install --no-cache-dir numpy
并指定任何特定版本,例如1.14.2
sudo pip install --no-cache-dir numpy==1.14.2
【讨论】:
无法卸载“numpy”。这是一个 distutils 安装的项目,因此我们无法准确确定哪些文件属于它,这只会导致部分卸载。【参考方案6】:这对我有用:
我的pip
升级后无法使用,所以我需要做的第一件事就是修复它
sudo gedit /usr/bin/pip
换行
from pip import main
到
from pip._internal import main
那么,
sudo pip install -U numpy
【讨论】:
【参考方案7】:今晚我遇到了同样的问题。原来是我安装了多个 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 环境,特别是标题为 "Lower level: virtualenv" 的部分。我知道我应该首先设置一个虚拟环境,但我又累又懒。哦,好吧,吸取教训!
(更新)
以防万一文档再次被移动,这里是相关的位...
创建 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 如您所愿! :-)【参考方案8】:由于文档不一致,我遇到了同样的问题。 这个页面说文档中的示例最适合 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。
希望这可以节省一些时间。
【讨论】:
【参考方案9】:我遇到了与四元数模块相同的问题。使用 conda 更新模块时,numpy 版本不会更新到最后一个。如果使用 pip 命令强制更新 pip install --upgrade numpy + 通过 pip install --user numpy numpy-quaternion 安装 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
>>>
【讨论】:
【参考方案10】:我在尝试启动 spyder 时遇到了同样的错误。 “RuntimeError:针对 API 版本 0xb 编译的模块,但这个版本的 numpy 是 0xa”。 一旦我错误地修改了我的机器的 numpy 版本(我以为我在一个 venv 中),就会出现这个错误。如果您使用的是安装了 conda 的 spyder,我的建议是只使用 conda 来管理包。
这对我有用:
conda install anaconda
(我的机器上有 conda 但没有 anaconda) 那么:
conda update numpy
【讨论】:
【参考方案11】:这对我有用:
sudo pip install numpy --upgrade --ignore-installed
【讨论】:
这对我也有用。我在安装旧的 numpy 版本时遇到了同样的问题,我无法移动或删除旧的 numpy 不要执行 sudo pip install !【参考方案12】:您可能还想查看您的$PYTHONPATH
。我在~/.bashrc
中更改了我的,以便让另一个包工作。
检查您的路径:
echo $PYTHONPATH
更改您的路径(我使用 nano,但您可以通过其他方式进行编辑)
nano ~/.bashrc
寻找带有export PYTHONPATH
的行...
修改后别忘了
source ~/.bashrc
【讨论】:
【参考方案13】:您可能想检查您的 matplotlib 版本。
不知何故,我安装了导致问题的开发版 matplotlib。降级到稳定版本修复了它。
也可以试试python -v -c 'import YOUR_PACKAGE' 2>&1 | less
,看看问题出在哪里,上面的错误是否能给你一些提示。
【讨论】:
【参考方案14】:对于那些使用 anaconda Python 的人:
conda update anaconda
【讨论】:
【参考方案15】:将 numpy 升级到最新版本
pip install numpy --upgrade
【讨论】:
这解决了问题,但是为什么呢?出现这个问题是因为安装了两个 numpy。升级如何解决这个问题?! 这不适合我:Requirement already up-to-date: numpy in /home/ubuntu/miniconda/lib/python3.6/site-packages
如果你使用默认的python导入torch可能会解决这个问题,它有一个旧版本的numpy。
当我尝试使用 import torch
导入新安装的 pytorch 时,这对我有用
卸载并重新安装python后这对我有用【参考方案16】:
检查路径
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,一切都很好。
【讨论】:
也为我工作。谢谢 工作,但需要使用pip install numpy -I
重新安装它(大写的 i 参数表示安装,同时忽略当前已移动的安装)。【参考方案17】:
您可能正在运行 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
【讨论】:
小心!安装多个版本的 python 可能不是一个好主意。你最终可能会喜欢这个人:***.com/questions/14117945/…以上是关于RuntimeError:针对 API 版本 a 编译的模块,但这个版本的 numpy 是 9的主要内容,如果未能解决你的问题,请参考以下文章
RuntimeError:针对 API 版本 0xc 编译的模块,但这个版本的 numpy 是 0xb
RuntimeError: module compiled against API version 0xe but this version of numpy is 0xd
Opencv / numpy问题:“针对API版本X编译的模块,但这个版本的numpy是Y”
RuntimeError: module compiled against API version 0xe but this version of numpy is 0xd
RuntimeError: module compiled against API version 0xb but this version of numpy is 0xa
解决 RuntimeError: module compiled against API version 0xf but this version of numpy is 0xd