安装 NumPy

安装 NumPy 的唯一前提是 Python 本身。如果您还没有 Python,并且想要最简单的入门方式,我们建议您使用 Anaconda Distribution - 它包括 Python、NumPy 以及许多其他用于科学计算和数据科学的常用软件包。

NumPy 可以使用 condapip、macOS 和 Linux 上的包管理器安装,或者 从源代码安装。有关更详细的说明,请参阅下面的 Python 和 NumPy 安装指南

CONDA

如果您使用 conda,您可以从 defaultsconda-forge 通道安装 NumPy

# Best practice, use an environment rather than install in the base env
conda create -n my-env
conda activate my-env
# If you want to install from conda-forge
conda config --env --add channels conda-forge
# The actual install command
conda install numpy

PIP

如果您使用 pip,您可以使用以下命令安装 NumPy

pip install numpy

同样,在使用 pip 时,最好使用虚拟环境 - 请参阅下面的 可重复安装,了解原因,以及 本指南,了解有关使用虚拟环境的详细信息。

Python 和 NumPy 安装指南#

在 Python 中安装和管理软件包是一件很复杂的事情,对于大多数任务来说,存在许多替代解决方案。本指南旨在让读者了解最佳(或最受欢迎)的解决方案,并给出明确的建议。它主要针对在常用操作系统和硬件上使用 Python、NumPy 和 PyData(或数值计算)堆栈的用户。

建议#

我们将从基于用户经验水平和感兴趣的操作系统的建议开始。如果您处于“初学者”和“高级”之间,如果您想保持简单,请使用“初学者”,如果您想按照最佳实践进行操作,以便在未来获得更长的发展,请使用“高级”。

初学者#

在 Windows、macOS 和 Linux 上

  • 安装 Anaconda(它将安装您需要的所有软件包以及下面提到的所有其他工具)。
  • 对于编写和执行代码,请使用 JupyterLab 中的笔记本进行探索性交互式计算,以及 SpyderVisual Studio Code 编写脚本和软件包。
  • 使用 Anaconda Navigator 管理您的软件包并启动 JupyterLab、Spyder 或 Visual Studio Code。

高级用户#

Conda#

  • 安装 Miniforge
  • 保持 base conda 环境最小,并使用一个或多个 conda 环境 安装您正在处理的任务或项目所需的软件包。

如果您更喜欢 pip/PyPI 的替代方案#

对于知道自己更喜欢基于 pip/PyPI 的解决方案的用户,他们可以从个人喜好或阅读下面关于 conda 和 pip 主要区别的文章中得知,我们建议您

  • python.orgHomebrew 或您的 Linux 包管理器安装 Python。
  • 使用 Poetry 作为维护最完善的工具,它提供类似于 conda 的依赖项解析器和环境管理功能。

Python 包管理#

管理软件包是一个具有挑战性的问题,因此,存在许多工具。对于 Web 和通用 Python 开发,存在大量与 pip 互补的 工具。对于高性能计算 (HPC),值得考虑使用 Spack。但对于大多数 NumPy 用户来说,condapip 是最流行的两种工具。

Pip 和 conda#

安装 Python 软件包的两个主要工具是 pipconda。它们的功能部分重叠(例如,两者都可以安装 numpy),但是它们也可以协同工作。我们将在这里讨论 pip 和 conda 之间的重大差异 - 这是您希望有效地管理软件包时需要了解的。

第一个区别是 conda 是跨语言的,它可以安装 Python,而 pip 是为系统上的特定 Python 安装的,并且仅将其他软件包安装到同一 Python 安装中。这也意味着 conda 可以安装您可能需要的非 Python 库和工具(例如,编译器、CUDA、HDF5),而 pip 则不能。

第二个区别是 pip 从 Python Packaging Index (PyPI) 安装,而 conda 从其自身的通道安装(通常是“defaults”或“conda-forge”)。PyPI 是迄今为止最大的软件包集合,但是,所有流行的软件包都可以在 conda 中使用。

第三个区别是 conda 是一个用于管理软件包、依赖项和环境的集成解决方案,而使用 pip,您可能需要另一个工具(有很多!)来处理环境或复杂的依赖项。

可重复安装#

随着库的更新,运行代码的结果可能会发生变化,或者您的代码可能会完全崩溃。能够重建您正在使用的软件包和版本集非常重要。最佳实践是

  1. 在您正在处理的每个项目中使用不同的环境,
  2. 使用您的软件包安装程序记录软件包名称和版本;每个软件包安装程序都有自己为此目的的元数据格式

NumPy 软件包和加速线性代数库#

NumPy 不依赖于任何其他 Python 软件包,但是,它确实依赖于一个加速线性代数库 - 通常是 Intel MKLOpenBLAS。用户不必担心安装这些库(它们会自动包含在所有 NumPy 安装方法中)。高级用户可能仍然想知道这些细节,因为使用的 BLAS 会影响磁盘上的性能、行为和大小

  • PyPI 上的 NumPy 轮子(pip 安装的就是这些轮子)是使用 OpenBLAS 构建的。OpenBLAS 库包含在轮子中。这使得轮子更大,如果用户还安装了(例如)SciPy,那么他们的磁盘上现在将有两个 OpenBLAS 副本。

  • 在 conda defaults 通道中,NumPy 是针对 Intel MKL 构建的。MKL 是一个单独的软件包,当用户安装 NumPy 时,它将被安装到用户的环境中。

  • 在 conda-forge 通道中,NumPy 是针对一个虚拟“BLAS”软件包构建的。当用户从 conda-forge 安装 NumPy 时,该 BLAS 软件包将与实际库一起安装 - 默认情况下是 OpenBLAS,但也可以是 MKL(来自 defaults 通道),甚至可以是 BLIS 或参考 BLAS。

  • MKL 软件包比 OpenBLAS 大得多,它在磁盘上的大小约为 700 MB,而 OpenBLAS 约为 30 MB。

  • MKL 通常比 OpenBLAS 快一点,也更健壮。

除了安装大小、性能和健壮性之外,还有另外两点需要注意

  • Intel MKL 不是开源的。对于正常使用来说这不是问题,但是如果用户需要重新分发使用 NumPy 构建的应用程序,这可能是一个问题。
  • MKL 和 OpenBLAS 都将为 np.dot 等函数调用使用多线程,线程数量由构建时选项和环境变量共同决定。通常会使用所有 CPU 内核。这对用户来说有时是意料之外的;NumPy 本身不会自动并行化任何函数调用。它通常会产生更好的性能,但也可能造成损害 - 例如,当使用 Dask、scikit-learn 或 multiprocessing 的另一层并行化时。

故障排除#

如果您的安装失败并显示以下消息,请参阅 ImportError 故障排除

IMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!

Importing the numpy c-extensions failed. This error can happen for
different reasons, often due to issues with your setup.
在此页面上