ImportError:无法导入名称 NUMPY_MKL

Posted

技术标签:

【中文标题】ImportError:无法导入名称 NUMPY_MKL【英文标题】:ImportError: cannot import name NUMPY_MKL 【发布时间】:2016-09-13 00:55:43 【问题描述】:

我正在尝试运行以下简单代码

import scipy
scipy.test()

但我收到以下错误

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python27\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 586, in runfile
    execfile(filename, namespace)
  File "C:/Users/Mustafa/Documents/My Python Code/SpectralGraphAnalysis/main.py", line 8, in <module>
    import scipy
  File "C:\Python27\lib\site-packages\scipy\__init__.py", line 61, in <module>
    from numpy._distributor_init import NUMPY_MKL  # requires numpy+mkl
ImportError: cannot import name NUMPY_MKL

我在 windows 10 下使用 python 2.7。

我已经安装了scipy,但这似乎并没有解决问题

感谢任何帮助。

【问题讨论】:

【参考方案1】:

从您的日志中可以清楚地看出numpy 包丢失。正如PyPI package 中提到的:

SciPy 库依赖于 NumPy,它提供了方便快捷的 N 维数组操作。

所以,尝试像使用 scipy 一样为 python 安装 numpy 包。

【讨论】:

我也安装了那个。出于某种原因,我不得不关闭 Spyder 并再次运行它,这解决了问题。还是谢谢。 如果 numpy 没有使用 MKL 支持编译,即使存在 numpy 也会出现此错误。 工作。谢谢我的 scikit 来自 lfd.uci.edu/~gohlke/pythonlibs 所以不得不使用同一个发行版中的 numpy【参考方案2】:

如果您查看导致错误的行,您会看到:

from numpy._distributor_init import NUMPY_MKL  # requires numpy+mkl

这一行注释将依赖关系声明为numpy+mklnumpyIntel Math Kernel Library)。这意味着您已经通过pip 安装了numpy,但scipy 是通过预编译存档安装的,它需要numpy+mkl

这个问题可以通过从here的whl文件中安装numpy+mkl来轻松解决。

【讨论】:

这个解决方案适用于我在 Windows 上运行 Python 2.7.10 @VMAtm 我们可以在同一个 virtualenvs 中同时安装 numpy(来自 pip)和 numpy+mkl(来自预编译库)吗? 据我所知,答案是否定的。他们正在互相卸载,因为它最后是一个 numpy,只有一些处理器指令(如果我理解得很好) 解决方案在 python 2.7 windows 7 上完美运行。为我节省了很多时间谢谢你一打! pip install --user 在我遇到权限问题时为我工作。【参考方案3】:

从www.lfd.uci.edu/~gohlke/pythonlibs 重新安装 numpy-1.11.0_XXX.whl(用于您的 Python)。如果与我之前 29.03.2016 下载的变体相比,此文件具有相同的名称和版本,但其大小和内容与旧变体不同。重新安装后错误消失。

第二个选项 - 从 0.17.1 返回到 scipy 0.17.0

附:我使用的是 Windows 64 位版本的 Python 3.5.1,所以不能保证 Python 2.7 的 numpy 已经得到纠正。

【讨论】:

【参考方案4】:

我不确定这是否是一个好的解决方案,但它消除了错误。 我注释掉了这一行:

from numpy._distributor_init import NUMPY_MKL 

它奏效了。不确定这是否会导致其他功能中断

【讨论】:

:) 有趣的是它确实有效,并且在 scipy 的 linux 版本中没有这样的行。【参考方案5】:

我在 Windows 上安装 gensim 时遇到了同样的问题。 Gensim 依赖于 scipy,而 scipy 依赖于 numpy。使这三项工作都是真正的痛苦。我花了很多时间才让所有这些都在同一时间工作。

解决方案: 如果您使用的是 Windows,请确保安装 numpy+mkl 而不仅仅是 numpy。 如果您已经安装了 scipy 和 numpy,请卸载然后使用“pip uninstall scipy”和“pip uninstall numpy”

然后从http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy下载numpy-1.13.1+mkl-cp34-cp34m-win32.whl 并使用 pip install numpy-1.13.1+mkl-cp34-cp34m-win32.wh 安装 注意:cp34-cp34m中34代表你使用的python版本,请下载相关版本。

现在从http://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy 下载 scipy(适用于您的 python 和系统的版本) 并使用“pip install scipy‑0.19.1‑cp34‑cp34m‑win32.whl”安装

你的 numpy 和 Scipy 现在都应该可以工作了。 Christoph Gohlke 的这些二进制文件使得在 Windows 上安装 python 包变得非常容易。但请确保从那里下载所有依赖包。

【讨论】:

我从 3.6 恢复到 python 3.4,因为我在使用 python 3.6 安装 scipy 时遇到问题【参考方案6】:

我最近在尝试在 jupyter(python3.x,win10)中加载 scipy 时遇到了同样的错误,尽管刚刚通过 pip 升级到 numpy-1.13.3+mkl。 解决方案是简单地升级 scipy 包(从 v0.19 到 v1.0.0)。

【讨论】:

我只是想提供一个我在遇到非常相似的问题时使用的修复程序。【参考方案7】:

错误的原因是您升级了 numpy 库,其中有一些来自 scipy 的功能,当前版本需要这些功能才能运行,而这些功能在 scipy 中可能找不到。只需使用 python -m pip install scipy --upgrade 升级你的 scipy 库。我遇到了同样的错误,这个解决方案适用于我的 python 3.5。

【讨论】:

【参考方案8】:

是的,只需重新安装 numpy,就可以了。

【讨论】:

【参考方案9】:

我没有足够的声誉来发表评论,但我想补充一点,.whl 文件的 cp 编号代表您的 python 版本。

cp35 -> Python 3.5.x

cp36 -> Python 3.6.x

cp37 -> Python 3.7.x

我认为这很明显,但我仍然因此浪费了将近一个小时,也许其他人也在为此苦苦挣扎。

所以对我来说,我在这里下载的工作版本 cp36:https://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy 因为我使用的是 Python 3.6.8。

然后我卸载了 numpy:

pip uninstall numpy 

然后我安装了numpy+mkl:

pip install <destination of your .whl file>

【讨论】:

以上是关于ImportError:无法导入名称 NUMPY_MKL的主要内容,如果未能解决你的问题,请参考以下文章

ImportError:从 sklearn 导入 TfidfVectorizer 时无法导入名称 __check_build

ImportError:无法导入名称 NUMPY_MKL

橙色3:ImportError:无法导入名称'_variable'

ImportError:无法使用 Flask 导入名称“app”

ImportError:无法导入名称 _imaging

ImportError:无法导入名称 _UNPACK_INT