NumPy 安装
安装 NumPy 的唯一先决条件是 Python 本身。如果你还没有 Python 并且想要以最简单的方式开始,我们建议使用 Anaconda Distribution - 它包括 Python、NumPy 和许多其他用于科学计算和数据科学的常用包。
NumPy 可以通过conda
、pip
、 macOS 和 Linux 上的包管理器安装,或者从来源处安装。有关更详细的说明,请参阅下面的Python 和 NumPy 安装指南。
conda
如果使用conda
,则可以用defaults
或conda-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 中使用 notebooks 进行探索性和交互式计算,使用 Spyder或Visual Studio Code 编写脚本和包。
- 使用Anaconda Navigator管理您的包并启动 JupyterLab、Spyder 或 Visual Studio Code。
高级用户
Windows 或 macOS
- 安装Miniconda。
- 保持
base
最小的conda 环境,并使用一个或多个 conda 环境来安装您正在处理的任务或项目所需的包。 - 除非您只对
defaults
频道中的软件包感到满意,否则请通过conda-forge
设置频道优先级来设置您的默认频道。
Linux
如果你觉得稍微过时的软件包没问题,并且更喜欢稳定性,可以不用直接去使用最新版本的库:
- 尽可能多地使用你的操作系统包管理器(Python 本身、NumPy 和其他库)。
- 使用
pip install somepackage --user
.
如果使用 GPU:
- 安装Miniconda。
- 保持
base
最小的conda 环境,并使用一个或多个 conda 环境 来安装您正在处理的任务或项目所需的包。 - 使用
defaults
conda 通道(conda-forge
对 GPU 包还没有很好的支持)。
Python 包管理
管理包是一个具有挑战性的问题,因此有很多工具。对于 Web 和通用 Python 开发,有大量与 pip 互补的工具。对于高性能计算(HPC), Spack
值得考虑。不过对于大多数 NumPy 用户来说,conda
和 pip
是两个最流行的工具。
pip 和 conda
安装 Python 包的两个主要工具是 pip
和 conda
。它们的功能部分重叠(例如,两者都可以安装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
您可能需要另一个工具(有很多!)来处理环境或复杂的依赖项。
选择 pip/PyPI
对于那些从个人喜好或者了解了上面关于 conda 和 pip 之间的主要区别,确定自己更喜欢基于 pip/PyPI 的解决方案的用户,我们建议:
- 从python.org、 Homebrew或您的 Linux 包管理器安装 Python 。
- 使用 Poetry 作为维护最良好的工具,它以与 conda 类似的方式提供依赖项解析器和环境管理功能。
可重复安装
随着库的更新,运行代码的结果可能会发生变化,或者您的代码可能会完全中断。能够重建您正在使用的软件包和版本集非常重要。最佳做法是:
- 为您正在处理的每个项目使用不同的环境,
- 使用您的软件包安装程序记录软件包名称和版本;
每个都有自己的元数据格式:
- Conda:conda 环境和 environment.yml
- Pip:虚拟环境和 requirements.txt
- Poetry:虚拟环境和 pyproject.toml
NumPy 包和加速线性代数库
NumPy 不依赖于任何其他 Python 包,但是,它依赖于加速线性代数库,通常是 Intel MKL或 OpenBLAS。用户不必担心安装这些(它们会自动包含在所有 NumPy 安装方法中)。高级用户可能仍然想知道详细信息,因为使用的 BLAS 会影响磁盘上的性能、行为和大小:
- pip 安装的 PyPI 上的 NumPy 轮子是使用 OpenBLAS 构建的。OpenBLAS 库包含在轮子中。这使得轮子更大,如果用户也安装(例如)SciPy,他们现在将在磁盘上拥有 OpenBLAS 的两个副本。
- 在 conda 默认通道中,NumPy 是针对 Intel MKL 构建的。MKL 是一个单独的包,将在用户安装 NumPy 时安装在用户的环境中。
- 在 conda-forge 频道中,NumPy 是针对虚拟的“BLAS”包构建的。当用户从 conda-forge 安装 NumPy 时,该 BLAS 包将与实际库一起安装 - 这默认为 OpenBLAS,但它也可以是 MKL(来自默认通道),甚至 BLIS或参考 BLAS。
- MKL 包比 OpenBLAS 大很多,它在磁盘上大约有 700 MB,而 OpenBLAS 大约有 30 MB。
- MKL 通常比 OpenBLAS 更快、更健壮。
除了安装尺寸、性能和稳健性之外,还有两件事情需要考虑:
- 英特尔 MKL 不是开源的。对于正常使用,这不是问题,但如果用户需要重新分发使用 NumPy 构建的应用程序,这可能是一个问题。
- MKL 和 OpenBLAS 都将使用多线程进行函数调用,如
np.dot
,线程数由构建时选项和环境变量决定。通常会使用所有 CPU 内核。这有时对用户来说是意料之外的;NumPy 本身不会自动并行化任何函数调用。它通常会产生更好的性能,但也可能是有害的——例如,当使用 Dask、scikit-learn 或多处理的另一个级别的并行化时。
故障排除
如果安装失败并显示以下消息,请参阅疑难解答 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.
更多建议: