导入错误:无法导入numpy.core.multiarray。

237

我正在尝试运行这个程序

import cv2
import time

cv.NamedWindow("camera", 1)

capture = cv.CaptureFromCAM(0)

while True:
    img = cv.QueryFrame(capture)
    cv.ShowImage("camera", img)
    if cv.WaitKey(10) == 27:
        break
cv.DestroyAllWindows()

但我在使用pyschopy和opencv时遇到了numpy的问题。

我一直收到的错误报告是:

RuntimeError: 模块编译是针对API版本7,但此numpy版本为6

Traceback (most recent call last):

File "C:\Users\John\Documents\EyeTracking\Programs\GetImage.py", line 1, in

import cv2

ImportError: numpy.core.multiarray导入失败

我在psychopy文件夹中有numpy-1.6.1-py2.7,但我很困惑出了什么问题?


1
我收到了相同的错误信息,而且我已经安装了numpy-1.9.2。 - tommy.carstensen
1
在我的情况下,我在Windows上使用Anaconda发行版,并运行“conda update python”两次(一次更新conda,再次更新python到2.7.13)解决了问题。 - Jason O.
1
运行 pip install opencv-python==3.4.2.17 numpy==1.14.5 对我有效。 - Markus Weber
我在使用NumPy 1.16.3、python 3.7和最新的macOS系统时遇到了相同的错误,升级到1.16.4版本解决了问题。 - nngeek
35个回答

243

我遇到了相同的错误,通过将numpy更新到1.8.0版本来解决:

pip install -U numpy

12
我收到了相同的错误信息,而且我已经安装了numpy-1.9.2。 - tommy.carstensen
@tommy.carstensen 你好,我也遇到了相同的问题。我尝试了使用 pip install -U numpy 命令来下载最新版本的 numpy,并且提示安装成功,但实际上还是老版本。 - user824624
处于完全相同的状态... 对我来说,问题在于numpy的双重安装,它与其他库存在冲突版本,并且它掩盖了conda安装的正确numpy版本。 解决方案: pip卸载numpy ...这将删除有问题的numpy版本并恢复正确的numpy版本... - roy650
4
对我来说,我需要移除numpy,然后安装numpy。这样就可以了。 - jef
很奇怪,即使我使用了numpy 1.20.3,我仍然遇到了这个错误,并通过升级到numpy 1.21.0来解决它。我想知道为什么这仍然是一个问题。 - cowlinator
我有一种感觉,无论涉及到哪些实际版本,将NumPy升级到新版本都是解决方案。 - AstroFloyd

46

如果的情况下

pip install -U numpy 

如果即使使用sudo也无法正常工作,您可能需要确保正在使用正确版本的numpy。我曾经遇到过相同的“numpy.core.multiarray导入失败”的问题,但这是因为我安装了1.8版本,却没有安装在正确的目录下,而是安装在我正在使用的Python版本1.6下。

我在Mac终端中使用以下命令找到了错误的numpy版本:

python -c "import numpy;print(numpy.__version__);print(numpy.__file__)";

这个命令告诉我我正在使用的numpy版本和位置(结果是1.6.2)。我去到这个位置,手动将它替换成1.8的numpy文件夹,这解决了我的"numpy.core.multiarray failed to import"问题。希望对某些人有用!

注意:在命令中,使用双下划线包围'版本'和'文件'


嗨,您需要查看在 python -c 命令后给定的路径,并在您的计算机上找到它。我相信您可以通过终端在 OSX 上删除目录,但我手动操作并解决了我的问题。 - alexfigtree
属性错误:'module'对象没有'file'属性。 - xApple
1
@xApple 在 versionsfile 之前后添加双下划线(也就是双下划线) - Hamlett
你也可以尝试直接卸载有问题的numpy。然后检查是否有一个不同的numpy版本会“出现”(就像我遇到的情况),如果需要的话,重新安装它。 - roy650
这对我解决了问题。我在想是否有一种简便的方法来清理,找到所有这样的包,在~/.local/lib中的旧版本和在/usr/lib中的新版本,而不需要手动操作像'rm -rf'这样的命令并犯错误?pip能做到吗? - DarenW
显示剩余2条评论

31
如果您正在使用Python3,在MacOS上使用以下命令可以解决问题:
python3 -m pip install numpy -I

-I 的详细说明:

pip install --help

-I, --ignore-installed      Ignore the installed packages, overwriting them.

1
这个方法有效,但是我使用了python -m pip install numpy -I。 - Ahmad Moussa
12
请解释一下旗帜的作用,否则开发人员会不得不继续传递“神奇的配方”。 - P i
1
根据 pip 的帮助:-I--ignore-installed 忽略已安装的包,覆盖它们。 如果现有的包是不同版本或使用不同的软件包管理器安装的,则可能会破坏您的系统! - emil

27

如果您想安装特定版本:

pip install numpy==1.8

1
如果我这样做,cl.exe 会报错:无法链接一个简单的 C 程序。 - snoob dogg
5
我有numpy 1.11,但出现了“无法加载numpy.core.multiarray”的问题。按照下面说明安装版本1.15.2后,问题得以解决。 - Craig S. Anderson

18

尝试运行sudo pip install numpy --upgrade --ignore-installed命令。

在Mac OS 10.11中可以正常工作。

如果上述命令无效,您应该关闭“Rootless”模式。


Rootless是OSX 10.11中的“系统完整性保护”。 - Startry

14
pip install opencv-python==3.4.2.17 numpy==1.14.5

对我来说完成得很好!


12
你可能需要升级pip,这对我有用。

你可能需要升级pip,这对我有用

pip install --upgrade pip
pip install -U numpy

11

所有这些不同的答案都表明,许多不同的问题出现了,例如ImportError: numpy.core.multiarray failed to import

==> 因此,在查看堆栈回溯信息之前,请查找更多错误信息

例如,复制一个这样的问题的步骤(这些步骤在numpy 1.20发布之前运行良好):

# set up a virtualenv
pyenv virtualenv 3.8.7 pip-issue-9542
pyenv local pip-issue-9542

# update pip, setuptools
pip install -U pip setuptools

# install 2 pips
pip install --no-cache-dir numpy==1.19.5 cvxpy==1.1.3

# try to load cvxpy
python -c 'import cvxpy'

输出:

RuntimeError: module compiled against API version 0xe but this version of numpy is 0xd
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/local/var/pyenv/versions/pip-issue-9542/lib/python3.8/site-packages/cvxpy/__init__.py", line 18, in <module>
    from cvxpy.atoms import *
  File "/usr/local/var/pyenv/versions/pip-issue-9542/lib/python3.8/site-packages/cvxpy/atoms/__init__.py", line 20, in <module>
    from cvxpy.atoms.geo_mean import geo_mean
  File "/usr/local/var/pyenv/versions/pip-issue-9542/lib/python3.8/site-packages/cvxpy/atoms/geo_mean.py", line 20, in <module>
    from cvxpy.utilities.power_tools import (fracify, decompose, approx_error, lower_bound,
  File "/usr/local/var/pyenv/versions/pip-issue-9542/lib/python3.8/site-packages/cvxpy/utilities/power_tools.py", line 18, in <module>
    from cvxpy.atoms.affine.reshape import reshape
  File "/usr/local/var/pyenv/versions/pip-issue-9542/lib/python3.8/site-packages/cvxpy/atoms/affine/reshape.py", line 18, in <module>
    from cvxpy.atoms.affine.hstack import hstack
  File "/usr/local/var/pyenv/versions/pip-issue-9542/lib/python3.8/site-packages/cvxpy/atoms/affine/hstack.py", line 18, in <module>
    from cvxpy.atoms.affine.affine_atom import AffAtom
  File "/usr/local/var/pyenv/versions/pip-issue-9542/lib/python3.8/site-packages/cvxpy/atoms/affine/affine_atom.py", line 22, in <module>
    from cvxpy.cvxcore.python import canonInterface
  File "/usr/local/var/pyenv/versions/pip-issue-9542/lib/python3.8/site-packages/cvxpy/cvxcore/python/__init__.py", line 3, in <module>
    import _cvxcore
ImportError: numpy.core.multiarray failed to import

重要线索是RuntimeError: module compiled against API version 0xe but this version of numpy is 0xd

搜索可以找到pip问题9542cvxpy问题1229,解释了出现的问题。

在这种情况下,解决方法是(a) 更新为cvxpy>=1.1.10,或者(b) 更新为numpy>=1.20,或者(c) 更新两者。由于原始环境不可再现,因此您必须应对库更改而不涉及pip的--no-build-isolation世界。


11

我遇到了相同的错误信息,在尝试一些建议的解决方案无果后,我发现需要运行以下命令:

pip uninstall numpy

多次出现了这种情况。每次都会有几个不同版本的numpy文件被标记为需要删除,它们在我的系统上累积了很长一段时间。

一旦没有任何要卸载的内容,就只是一个简单的

pip install numpy
希望这可以帮助某些人!

Hope this helps someone!


9

好的,我找到了一种解决方案,可以帮助我在Windows 10上使用Python 3.9运行OpenCV。

这是一个与Windows版本超过v2004有关的已知问题。 (来源)

简而言之,您需要的NumPY版本是v1.19.3:

pip uninstall numpy

pip install numpy==1.19.3

若想一行命令搞定,使用pip的 --force-reinstall 标志:
pip install --force-reinstall numpy==1.19.3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接