【问题标题】:Installing NumPy on Windows在 Windows 上安装 NumPy
【发布时间】:2015-04-09 10:21:50
【问题描述】:

我根本无法在 Windows 上安装 NumPy。我不断收到此错误 -

PS C:\python27> pip install http://sourceforge.net/projects/numpy/file/NumPy/
Collecting http://sourceforge.net/projects/numpy/files/NumPy/
Downloading http://sourceforge.net/projects/numpy/files/NumPy/ (58kB)
100% |################################| 61kB 15kB/s
Cannot unpack file c:\users\toshiba\appdata\local\temp\pip-qev4rz-unpack\NumPy
(downloaded from c:\users\toshiba\appdata\local\temp\pip-omripn-build, content-type: text/html; charset=utf-8); cannot detect archive format
Cannot determine archive format of c:\users\toshiba\appdata\local\temp\pip-omripn-build

我之前有一个 Python 64 位版本,我不确定 NumPy 版本是否与 64 位 Python 兼容。所以我卸载了它并安装了一个 32 位的 Python 版本。但我仍然遇到同样的错误。虽然我的 Python 32 位版本运行良好。

我尝试了“pip install numpy”,但最后给了我以下错误-

C:\Python27\lib\distutils\dist.py:267: UserWarning: Unknown distribution option: 'define_macros'

  warnings.warn(msg)

error: Unable to find vcvarsall.bat

----------------------------------------
Command "C:\Python27\python.exe -c "import setuptools,tokenize;__file__='c:\\users\\toshiba\\appdata\\local\\temp\\pip-build-hdhqex\\numpy\\setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'),__file__, 'exec'))" install --record c:\users\toshiba\appdata\local\temp\pip-x_6llm-record\install-record.txt --single-version-externally-managed --compile" failed with error code 1 in c:\users\toshiba\appdata\local\temp\pip-build-hdhqex\numpy

我可能做错了什么?

【问题讨论】:

  • 试用lfd.uci.edu/~gohlke/pythonlibs/#numpy的预编译版本
  • vcvarsall.bat 是 Visual Studio 的一部分,因此您必须安装它。然后检查这个答案stackoverflow.com/questions/2667069/…
  • 您可能会喜欢 Anaconda,这是一个 Python 发行版,内置了大多数流行的定量工作库。
  • Mailerdaimon 这是我在尝试预编译版本时的错误 PS C:\Users\toshiba\downloads> pip install numpy-1.9.2rc1+mkl-cp27-none-win_amd64.whl numpy-1.9.2rc1+ mkl-cp27-none-win_amd64.whl 不是这个平台支持的轮子。
  • numpy installation docs 明确建议使用 anaconda/miniconda。

标签: python numpy pip


【解决方案1】:

一些解释

在第一种情况下,我没有检查但我猜pip直接下载了与给定URL对应的资源:@​​987654321@。服务器返回一个 HTML 文档,而 pip 需要一个存档文件。所以这是行不通的。

那么安装Python包基本上有两种方式:

  • 来源,正如您当时所尝试的那样
  • 来自预编译包

第一种情况,您使用命令pip install numpy 进行了尝试,但由于此包包含本机代码,因此需要正确安装开发工具(我一直觉得在 Windows 上这样做很头疼,但我这样做了,所以这显然是可行的)。您遇到error: Unable to find vcvarsall.bat 的错误意味着您没有安装工具,或者没有正确设置环境。

对于第二种情况,你有不同种类的预编译包:

  • 轮子,您也可以使用 pip 安装轮子
  • 安装程序,您在 Windows 上用作标准安装程序

对于这两者,您需要检查二进制文件是否已针对您的 Python 架构(32 位或 64 位)和版本进行了严格编译。

一个简单的解决方案

你可以找到几个numpy 的轮子:http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy。要获得正确的体系结构,请签入名称 win32 以获取 32 位和 amd64 以获取 64 位。要获得正确的 Python 版本,请检查 cpXX:第一个 X 是主要版本,第二个 X 是次要版本,例如 cp27 表示 CPython 2.7。

示例:pip install numpy‑1.9.2rc1+mkl‑cp27‑none‑win32.whl

硬解:安装和使用开发工具

免责声明:以下所有解释可能都不是很清楚。它们来自不同时刻的多次调查,但在我的配置中,它们导致了一个可行的解决方案。有些链接可能无用或多余,但这就是我所指出的。所有这些都需要进行一些清理,并且可能还需要概括。

首先,您需要了解disutils - 这是预安装的包,它处理比pip 更低级别的包工作流(后者使用) - 将尝试使用严格的编译器与用于构建您安装的 Python 机器的那个相匹配。

Python 的官方发行版将 Microsoft Visual C++ 用于 Microsoft Windows 包。所以在这种情况下你需要安装这个编译器。

如何找到合适的 Visual C++ 版本

Python 使用此命令python -c "import sys; print(sys.version)"(或调用交互式 shell 时)打印的字符串将如下所示:

3.4.1 (v3.4.1:c0e311e010fc, May 18 2014, 10:45:13) [MSC v.1600 64 bit (AMD64)]

方括号之间的最后一部分是编译器的标识部分。不幸的是,这不是很简单,你有通信列表:

在我上面给出的示例中,这意味着 Microsoft Visual C++ 2010 64 位

如何安装 Visual C++

您再也找不到适用于现代版本的独立 Visual C++ 包。因此,您需要自行安装 Windows SDK。

这里有一些参考链接:

疑难解答

您在安装 SDK 时可能会遇到错误: DDSet_Error: Patch Hooks: Missing required property 'ProductFamily': Setup cannot continue. DDSet_Warning: Setup failed while calling 'getDLLName'. System error: Cannot create a file when that file already exists.

他们已经在几个问题中被报道过:

作为解决方案,您可以查看此链接:Windows SDK Fails to Install with Return Code 5100

问题是删除所有冲突的(理解:SDK 安装程序尝试自行安装的)版本的 Visual C++ 可再发行组件。

使用开发工具

通常你应该运行vsvarsall.bat(位于Visual Studio安装路径的VC文件夹内 - 例如:C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat)来设置正确的环境变量,这样distutils的执行就不会尝试编译包时失败。

此批处理脚本接受一个参数,该参数应设置所需的架构。但是,我发现在 SDK 的免费版本中,在尝试其中几个参数时,缺少一些额外的脚本。

只是说,如果您正在为 32 位架构进行编译,只需调用 vsvarsall.bat 即可。如果需要编译为64位,可以直接调用SetEnv.cmd,位于SDK安装路径下的某处——例如:"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x64

【讨论】:

  • 感谢 Yannick 提供如此详细且解释清楚的回复。我尝试从lfd.uci.edu/~gohlke/pythonlibs/#numpy 安装预编译版本......因为我已经在我的 64 位机器上安装了位 Python...这个命令运行得很好 pip install numpy‑1.9.2rc1+mkl‑cp27‑none‑win32.whl我成功安装了numpy。再次感谢。
  • 听起来用你自己的编译器/工具链编译 CPython + numpy 可能更容易。
  • 简单的解决方案对我有用(win10、64b、Python 3.6)
【解决方案2】:

在 Windows 上,pip 非常适合安装不需要编译的软件包。否则,请认真地为自己省去构建和维护软件包的麻烦,并利用其他人为您所做的工作。我建议使用以下任一 Python 发行版:

Anaconda 的下载和安装要大一些,但它默认包含许多有用的第三方包(例如 numpy)。 ActivePython 包含一个包管理器,它允许您轻松安装预编译的二进制文件(安装 numpy 就像pypm install numpy 一样简单)。

使用这些 Python 发行版的优势在于,您可以在几分钟内以一种易于重现的方式运行有效的安装。

【讨论】:

  • (不是我的反对意见)Anaconda 绝对不适合我。我必须安装常规 python 并从此处最佳答案的“简单解决方案”中的链接中获取 numpy+mkl。尽管如此,我的 numpy config 指向的 mkl 目录根本不存在。所以,我仍然面临问题,虽然 numpy 工作(显然)很好,但其他包如“theano”仍然有问题。
【解决方案3】:

我尝试为 64 位 Windows 7 安装 numpy 并花了很长时间。我实际上是在尝试设置 sklearn。研究了许多帖子,记录了对我有用的东西。希望它能节省您的时间! https://simplemachinelearning.wordpress.com/2015/11/09/set-up-sklearn-on-windows/

【讨论】:

    【解决方案4】:

    最好的解决方案是从https://www.microsoft.com/en-us/download/details.aspx?id=44266下载并安装VCforPython2.7

    然后尝试 pip install numpy。

    100% 正常工作

    【讨论】:

      【解决方案5】:

      我在为机器学习设置 python 时也遇到了上述问题。

      我按照以下步骤操作:-

      安装python-2.7.13.msi

      • 设置 PATH=C:\Python27

      • 设置 PATH=C:\Python27\Scripts

      转到http://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy

      已下载:- • numpy-1.13.1+mkl-cp27-cp27m-win32.whl • scipy-0.18.0-cp27-cp27m-win32.whl

      安装 numpy: pip install numpy-1.13.1+mkl-cp27-cp27m-win32.whl

      安装 scipy: pip install scipy-0.18.0-cp27-cp27m-win32.whl

      您可以使用以下 cmds 测试正确性:-

      >>> import numpy
      >>> import scipy
      >>> import sklearn
      >>> numpy.version.version
      '1.13.1'
      >>> scipy.version.version
      '0.19.1'
      >>>
      

      【讨论】:

        猜你喜欢
        • 2012-12-25
        • 1970-01-01
        • 2015-07-14
        • 2017-08-20
        • 2014-01-31
        • 2011-01-11
        • 2011-03-04
        • 2014-05-14
        • 2014-01-05
        相关资源
        最近更新 更多