为 Windows 10 安装 numpy:导入多数组 numpy 扩展模块失败

Posted

技术标签:

【中文标题】为 Windows 10 安装 numpy:导入多数组 numpy 扩展模块失败【英文标题】:Installing numpy for Windows 10: Importing the multiarray numpy extension module failed 【发布时间】:2017-05-30 14:31:03 【问题描述】:

我是Python 的新手,我尝试安装numpy 失败。当前的问题是读取错误消息,部分是Importing the multiarray numpy extension module failed。我无法在 Internet 上找到此错误消息并寻求帮助。完整的错误信息在这篇文章的底部。

首先我认为我应该提供系统和版本的详细信息并描述我所做的事情。我在 64 位机器上运行 Windows 10 并从 https://www.python.org/downloads/windows/ 安装了 Python 2.7.13

我还安装了Anaconda,也为Python 2.7 和一台64 位机器,从这里下载https://www.continuum.io/downloads。 Anaconda 运行 Python 2.7.12,而不是 Python 2.7.13。当我在Anaconda GUI IPython 中键入import numpy 时,不会出现任何错误或警告。尽管如此,我的印象是从Python 2.7.13 内部运行numpy 使用IDLE (Python GUI) 可能计算速度更快。 Python 2.7.13 出现在我的 Path 语句中。

我从http://www.lfd.uci.edu/~gohlke/pythonlibs/#jpype下载了numpy-1.12.0rc2+mkl-cp27-cp27m-win_amd64.whl,根据这篇帖子installing numpy from wheel format on windows ( not a supported wheel on this platform.)的建议,我重命名了:

numpy-1.12.0rc2+mkl-cp27-cp27m-win_amd64.whl 至: numpy-1.12.0rc2+mkl-cp27-none-win32.whl

通过单击名称并对其进行手动编辑。重命名的文件在文件夹C:\Python27

然后我使用Windows命令窗口(cmd)更新pip输入:

python -m pip install --upgrade pip

一条消息说pip 已经是最新的了。

然后我在 cmd 窗口中输入以下内容:

pip install numpy-1.12.0rc2+mkl-cp27-none-win32.whl

一条消息说:Successfully installed numpy-1.12.0rc2+mkl。 (在执行此操作之前,我尝试使用其原始名称安装 .whl 文件并收到该文件不适用于我的平台的错误。)

Python 2.7.13 中安装numpy 后,我打开Python 并输入:

import numpy

这是返回的完整错误消息:

Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    import numpy
  File "C:\Python27\lib\site-packages\numpy\__init__.py", line 142, in <module>
    from . import add_newdocs
  File "C:\Python27\lib\site-packages\numpy\add_newdocs.py", line 13, in <module>
    from numpy.lib import add_newdoc
  File "C:\Python27\lib\site-packages\numpy\lib\__init__.py", line 8, in <module>
    from .type_check import *
  File "C:\Python27\lib\site-packages\numpy\lib\type_check.py", line 11, in <module>
    import numpy.core.numeric as _nx
  File "C:\Python27\lib\site-packages\numpy\core\__init__.py", line 24, in <module>
    raise ImportError(msg)
ImportError: 
Importing the multiarray numpy extension module failed.  Most
likely you are trying to import a failed build of numpy.
If you're working with a numpy git repo, try `git clean -xdf` (removes all
files not under version control).  Otherwise reinstall numpy.

大量numpy 文件夹和文件现在出现在C:\Python27

我还尝试了以下两个命令并收到了显示的消息:

>>> pip show numpy
SyntaxError: invalid syntax
>>> git clean -xdf
SyntaxError: invalid syntax
>>> 

抱歉,这篇文章太长了,但我不知道以上哪些细节可能对诊断问题最有帮助。我只使用Python 大约 24 小时,大部分时间都花在尝试将numpy 安装到Python 2.7.13 中。大多数情况下我使用R 并且知道一些C。我没有尝试安装任何其他 Python 库或包。也许我缺少numpy 所需的依赖项。感谢您对此问题的任何建议或帮助。如果我可以提供更多信息,请告诉我。抱歉,如果这是重复的。

【问题讨论】:

最后的命令(pip 和 git)不是 python 命令。您应该在 python shell 之外调用它们。此外,我认为 anaconda 已经安装了 numpy。尝试删除您使用 pip 安装的内容并再次导入 numpy。 我用pip 安装的唯一东西是numpy-1.12.0rc2+mkl-cp27-none-win32.whl。那是我应该卸载的吗?我安装了Anaconda 和它自己的安装应用程序,该应用程序是从Anaconda 网站下载的。我应该尝试卸载Anaconda 吗?在安装 .whl 文件之前,C:\Python27 文件夹内几乎没有文件,import numpy 返回一个语法错误。 尝试卸载你安装的 numpy。 Anaconda 带有预安装的软件包,其中之一是 numpy @JoaquimFerrer 我明白这一点。 NumpyAnaconda 工作。我的偏好是在Python 2.7.13 中运行它,因为我有一种印象,也许是错误的印象,即Python 2.7.13 的计算能力和速度更好。如何在从Python 网页下载的Python 2.7.13 中安装numpy @cgohlke 请提供指向文件numpy-1.12.0+mkl-cp27-none-win32.whl 的链接。我找不到它。 【参考方案1】:

在我的情况下,这个问题与 numpy.所以,我删除了 numpy 并再次安装它。如果您已经有 conda 环境,要删除 numpy,我们可以通过 conda remove numpy 完成,如果此命令正在删除一些其他依赖于 numpy 的包,那么如果安装了 pip,则在同一环境中,可以使用 pip pip uninstall numpy 删除 numpy 和再次下载它使用pip install numpy。这应该可以解决您的错误。

【讨论】:

谢谢!这解决了我在 64 位 Windows 10 上的问题。 谢谢!就我而言,numpy 仅使用 pip 安装,但您的回答让我走上了正确的道路。我做了一个 conda install numpy 并解决了这个问题!【参考方案2】:

在https://github.com/numpy/numpy/issues/9272 上广泛讨论了这个问题,并提供了一个对我有用的解决方案。这与我相信您拥有的 Anaconda 环境有关。

引用: tobigithub 于 2017 年 7 月 23 日发表评论。 @njsmith 谢谢,我刚刚确认在从未见过英特尔 MKL DLL、numpy 或 conda 的干净 Windows 10 系统上使用 VM,一切都很好,并且 numpy 工作正常。我只是很困惑 numpy 如何突然停止工作,可能是第三方。可能需要更多的挖掘,让我们看看我们能找到什么来使 numpy 铁定解决任何依赖问题。

该解决方案确实与WIN下使用Intel MKL库的一些DLL依赖问题有关 numpy 导入错误在 python 3.6.2 和 numpy 1.13.1 下:

“导入 numpy” numpy\core_init_.py",第 16 行,在 从 。导入多数组 ImportError: DLL load failed: 找不到指定的过程。

快速而肮脏的解决方案是从特定环境 (env) 子文件夹中复制所有英特尔 mkl*.dll 库(参见 ***)

04/13/2017  12:50 AM        30,277,392 mkl_avx.dll
04/13/2017  12:50 AM        38,253,840 mkl_avx2.dll
04/13/2017  12:50 AM        42,234,640 mkl_avx512.dll
04/13/2017  12:50 AM        45,722,896 mkl_avx512_mic.dll
04/13/2017  12:50 AM        25,369,360 mkl_core.dll
04/13/2017  12:50 AM        24,541,456 mkl_def.dll
04/13/2017  12:50 AM        24,506,640 mkl_intel_thread.dll
04/13/2017  12:50 AM        29,744,400 mkl_mc.dll
04/13/2017  12:50 AM        30,594,320 mkl_mc3.dll
04/13/2017  12:50 AM        12,567,824 mkl_rt.dll
04/13/2017  12:50 AM        11,388,688 mkl_sequential.dll
04/13/2017  12:50 AM        12,575,504 mkl_tbb_thread.dll
04/13/2017  12:50 AM        11,250,960 mkl_vml_avx.dll
04/13/2017  12:50 AM        11,463,952 mkl_vml_avx2.dll
04/13/2017  12:50 AM        10,285,840 mkl_vml_avx512.dll
04/13/2017  12:50 AM        11,692,304 mkl_vml_avx512_mic.dll
04/13/2017  12:50 AM         5,224,208 mkl_vml_cmpt.dll
04/13/2017  12:50 AM         5,345,552 mkl_vml_def.dll
04/13/2017  12:50 AM         9,477,904 mkl_vml_mc.dll
04/13/2017  12:50 AM         9,368,336 mkl_vml_mc2.dll
04/13/2017  12:50 AM         9,593,616 mkl_vml_mc3.dll

现在 numpy 可以导入并正常运行了。

【讨论】:

【参考方案3】:

我似乎已经使用以下步骤在Windows 10 64 位计算机上为Python 2.7.13 安装了numpy。我能够为Python 2.7.13 的32 位或64 位版本安装numpy。提供了两者的说明。

此答案的顶部是我对 32 位 Python 的说明。 中间是我对 64 位 Python 的说明。 底部是我使用 wheel 文件对 64 位 Python 的说明。

我怀疑我原来帖子中的主要问题可能是由于没有意识到从这里下载的 Python 的默认版本 (https://www.python.org/downloads/) 显然是 32 位的。

用于在 32 位 Python 2.7.13 上安装 numpy

    卸载Anaconda

    Environment Variables 窗口中从User Variables 中删除了Anaconda

    从Python官方网站安装Python 2.7.13:https://www.python.org/

    在命令窗口中输入:

    C:\users\general1>cd:\python27

    尝试在命令窗口中更新 pip,尽管 pip 已经是最新的:

    python -m pip install -U pip

    在命令窗口中使用了以下命令,返回了大量错误:

    pip 安装 numpy

    在命令窗口中输入:

    python -m pip install numpy

第 7 步似乎奏效了。它返回以下消息:

C:\Python27>python -m pip install numpy
Collecting numpy
  Retrying (Retry(total=4, connect=None, read=None, redirect=None)) 
  after connection broken by 'ProtocolError('Connection aborted.',
  error(10054, 'An existing connection was forcibly 
  closed by the remote host'))': /simple/numpy/
  Downloading numpy-1.12.0-cp27-none-win32.whl (6.6MB)
    100% |################################| 6.6MB 64kB/s
Installing collected packages: numpy
Successfully installed numpy-1.12.0

    打开Python 2.7.13 并输入:

    导入 numpy

仅返回命令提示符。未发出任何错误或警告。

我还没有尝试使用任何需要numpy 的代码,但至少它似乎已经安装了。

第 7 步表示下载了一个 32 位文件:

numpy-1.12.0-cp27-none-win32.whl

我不知道安装的是 32 位版本的 numpy 还是 64 位版本。也许该文件是 64 位版本,如我的问题中所述,已重命名为 32 位版本。

我输入了Python(来自Do I have Numpy 32 bit or 64 bit?):

import numpy.distutils.system_info as sysinfo
sysinfo.platform_bits
32

所以,似乎安装了 32 位版本的 numpy,尽管我的 Python 应该是 64 位版本(来自这里:How do I determine if my python shell is executing in 32bit or 64bit mode on OS X?):

import platform
platform.architecture()[0]
'32bit'

也许在Python的所有安装和卸载过程中,我上次不小心安装了一个32位版本。我可以尝试再次安装 Python 并使用预期的 64 位版本。希望上述相同步骤仍然有效。

如果我想要Python 2.7.13的64位版本,我可以在Python官方网页上点击以下内容(这里:https://www.python.org/downloads/windows/):

Download Windows x86-64 MSI installer

而不是突出的(https://www.python.org/downloads/):

Download Python 2.7.13

我也很想知道文件numpy-1.12.0-cp27-none-win32.whl 是从哪里下载的。如果我发现,我也会提供。可能是从这里下载的:https://pypi.python.org/pypi/numpy

用于在 64 位 Python 2.7.13 上安装 numpy

上述步骤适用于安装numpy,结果是Python 2.7.13 的32 位版本。

要为 64 位版本的 Python 2.7.13 安装 numpy,我使用了以下步骤:

    卸载Python 2.7.13

    下载:python-2.7.13.amd64.msi,点击:Download Windows x86-64 MSI installer 从此处:https://www.python.org/downloads/windows/

    在命令窗口中输入:

    C:\users\general1>cd:\python27

    尝试在命令窗口中更新pip,尽管pip 已经是最新的:

    python -m pip install -U pip

    在命令窗口中使用了以下命令,这次没有返回任何错误:

    pip 安装 numpy

返回:

C:\Python27>pip install numpy
Collecting numpy
  Downloading numpy-1.12.0-cp27-none-win_amd64.whl (7.5MB)
    100% |################################| 7.5MB 63kB/s
Installing collected packages: numpy
Successfully installed numpy-1.12.0

    打开Python 2.7.13 并输入:

    导入 numpy

没有返回错误或警告。

    检查 numpy 是 64 位还是 32 位。它是 64 位的。

    将 numpy.distutils.system_info 导入为系统信息

    sysinfo.platform_bits

    64

用于在Python 2.7.13 中安装numpy 轮文件

安装numpy 后,我尝试安装scipy 并收到错误:numpy.distutils.system_info.NotFoundError: no lapack/blas resources found(此处描述为Windows Scipy Install: No Lapack/Blas Resources Found)。

我做了以下事情:

    已卸载Python 2.7.13

    已安装 Visual Studio Community 2017 RC,如 drawid 所述(此处:Windows Scipy Install: No Lapack/Blas Resources Found)

    安装VCForPython27.msi 也如drawid 所述。

然后我收到了这里提到的scipy 错误cannot import name NUMPY_MKL (ImportError: cannot import name NUMPY_MKL)。

我按照 VMAtm 的建议从这里下载了文件 numpy-1.12.0+mkl-cp27-cp27m-win_amd64.whlscipy-0.18.1-cp27-cp27m-win_amd64.whl:http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy。

然后我:

    卸载Python 2.7.13

    使用python-2.7.13.amd64.msi重新安装Python 2.7.13

    使用命令窗口中的以下行从http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy 安装numpy-1.12.0+mkl-cp27-cp27m-win_amd64.whl

    pip install numpy-1.12.0+mkl-cp27-cp27m-win_amd64.whl

    使用命令窗口中的以下行从http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy 安装scipy-0.18.1-cp27-cp27m-win_amd64.whl

    pip install scipy-0.18.1-cp27-cp27m-win_amd64.whl

numpyscipy 现在都可以在 Python 2.7.13 内部导入

请注意,在使用上述pip 命令之前,我将scipy-0.18.1-cp27-cp27m-win_amd64.whlnumpy-1.12.0+mkl-cp27-cp27m-win_amd64.whl 放在文件夹c:\Python27 中。

C:\>cd\Python27

C:\Python27>pip install numpy-1.12.0+mkl-cp27-cp27m-win_amd64.whl
Processing c:\python27\numpy-1.12.0+mkl-cp27-cp27m-win_amd64.whl
Installing collected packages: numpy
Successfully installed numpy-1.12.0+mkl

C:\Python27>pip install scipy-0.18.1-cp27-cp27m-win_amd64.whl
Processing c:\python27\scipy-0.18.1-cp27-cp27m-win_amd64.whl
Installing collected packages: scipy
Successfully installed scipy-0.18.1

C:\Python27>

【讨论】:

【参考方案4】:

我通过以下步骤解决了这个问题:

    创建和激活新的conda 环境 在环境中安装numpy 然后将这个环境用于我的 项目

我使用PyCharm所以执行(3),我只是将项目解释器设置为我在(1)中创建的新环境中的Python解释器。

【讨论】:

以上是关于为 Windows 10 安装 numpy:导入多数组 numpy 扩展模块失败的主要内容,如果未能解决你的问题,请参考以下文章

尝试在 Windows 10 上安装 NumPy 和其他库时出错 [重复]

Windows10+Python3下安装NumPy+SciPy+Matplotlib

无法从已安装的 jupyter 内核导入 numpy

windows下安装python的numpy,scipy,sklearn

windows10+Python3-如何安装numpy和matplotlib包

为啥我导入 numpy 后多处理只使用一个核心?