【问题标题】:Why should NumPy be installed via a binary package?为什么要通过二进制包安装 NumPy?
【发布时间】:2015-08-21 10:55:04
【问题描述】:

根据NumPy documentation

在大多数用例中,在您的系统上安装 NumPy 的最佳方法是使用适用于您的操作系统的可安装二进制包。

但是为什么不能使用pip 轻松安装呢?

据我了解,NumPy 需要根据目标机器编译纯 Python 以外的东西。这是如何运作的?二进制包是否包含 C 源文件和 C 编译器?还是它包含所有预编译的二进制文件,只是根据操作系统选择合适的安装?

【问题讨论】:

  • 为什么要编译内核?因为:一些更好的性能....

标签: python numpy pip


【解决方案1】:

pip 包只包含 numpy 源代码分发,其中包括用 C 编写的扩展,因此为了构建它,您需要有一个可用的 C 编译器(这肯定不会与 numpy 源代码一起预打包)。您还需要一个 LAPACK 库,如果您从源代码构建它,可能还需要 FORTRAN 77 编译器。

通过pip 安装 numpy 的难易程度很大程度上取决于您所使用的环境。一般来说,如果您使用的是 Linux 或 OSX,那么设置必要的工具链非常容易。由于编译器支持的状态较差,通常是 Windows 用户遇到的问题最多,因此通常的建议是从二进制发行版安装。 Anaconda 分布和Christoph Gohlke's pre-built binaries 可能是两个最流行的选项。

如果您是 Windows 用户并且您感觉特别喜欢冒险/受虐狂,那么还有从源代码 here 编译 numpy 和 scipy 的说明。

【讨论】:

  • 那么,可安装的二进制包有什么作用?只需解压预编译文件?
  • 对于 C 扩展,基本上可以(Python 组件按原样分发)。 Anaconda 发行版甚至带有自己的包管理器conda,它也可以通过获取具有预编译 C 扩展等的 Python 模块来工作。
  • 不知道有没有。据我了解,可安装的二进制包,例如 Anaconda-2.3.0-Windows-x86.exe,包含所有平台所需的预编译 C 扩展,并选择合适的进行安装。是这样吗?
  • 好吧,如果您下载 Anaconda-2.3.0-Windows-x86.exe,您将获得 32 位 Windows 的预编译二进制文件。如果您下载 x86_64 版本,您将获得 64 位 Windows 的二进制文件。 Continuum 的网站还提供用于 OSX 和 Linux 的 32 位和 64 位版本。为不同平台单独分发构建更有意义,而不是将所有内容捆绑到一个巨大的安装程序中,并为每个受支持的平台提供二进制文件。
  • 如果是这样,我是否可以说,一个zip格式的安装程序,例如Anaconda-2.3.0-Windows-x86.zip,也是可能的,更进一步,我们可以通过pip安装在win-32平台安装Anaconda-2.3.0-Windows-x86.zip
【解决方案2】:

最重要的原因是您需要一些高性能的 BLAS/LAPACK 实现。有很多选择,如果您不知道自己在做什么,最好有人为您选择。

英特尔 MKL 是更好的选择之一,但它并非完全免费。 Christoph Gohlke 的二进制文件使用它。 Continuum Analytics 单独销售binaries built with MKL

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-21
    • 1970-01-01
    • 2011-06-10
    • 2011-10-27
    • 2020-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多