从源代码构建#

在本地计算机上构建可让你完全控制构建选项。如果您是熟悉使用命令行的 MacOS 或 Linux 用户,则可以通过按照以下说明在本地构建 NumPy。

注意

如果您想出于开发目的构建 NumPy,请参阅 设置和使用开发环境 以获取更多信息。

先决条件#

构建 NumPy 需要安装以下软件

  1. Python 3.9.x 或更高版本

    请注意,还需要安装 Python 开发头文件,例如,在 Debian/Ubuntu 上,需要同时安装 python3python3-dev。在 Windows 和 macOS 上,这通常不是问题。

  2. 编译器

    NumPy 的大部分是用 C 和 C++ 编写的。您将需要一个符合 C99 标准的 C 编译器,以及一个符合 C++17 标准的 C++ 编译器。

    虽然构建 NumPy 不需要 FORTRAN 77 编译器,但需要运行 numpy.f2py 测试。如果未自动检测到编译器,则会跳过这些测试。

    请注意,NumPy 主要使用 GNU 编译器开发,并在 MSVC 和 Clang 编译器上进行测试。其他供应商(如 Intel、Absoft、Sun、NAG、Compaq、Vast、Portland、Lahey、HP、IBM)的编译器仅以社区反馈的形式提供支持,可能无法开箱即用。建议使用 GCC 6.5(及更高版本)编译器。在 ARM64(aarch64)上,建议使用 GCC 8.x(及更高版本)。

  3. 线性代数库

    NumPy 不需要安装任何外部线性代数库。但是,如果这些库可用,NumPy 的设置脚本可以检测到它们并将其用于构建。可以使用许多不同的 LAPACK 库设置,包括优化的 LAPACK 库,如 OpenBLAS 或 MKL。这些库的选择和位置以及包含路径和其他此类构建选项可以在 .pc 文件中指定,如 BLAS and LAPACK 中所述。

  4. Cython

    要构建 NumPy,您需要较新版本的 Cython。

  5. NumPy 源代码

    按照 Contributing to NumPy 中的说明克隆存储库。

注意

从 1.26 版本开始,NumPy 将采用 Meson 作为其构建系统(有关更多详细信息,请参见 Status of numpy.distutils and migration adviceUnderstanding Meson)。

基本安装#

要从源代码的本地副本构建和安装 NumPy,请运行

pip install .

这将安装所有构建依赖项,并使用 Meson 编译和安装 NumPy C 扩展和 Python 模块。如果您需要更多地控制构建选项和命令,请参阅以下部分。

要执行可以从源文件夹运行的就地构建,请运行

pip install -r build_requirements.txt
pip install -e . --no-build-isolation

注意:有关在 NumPy 本身上进行开发工作的构建说明,请参阅 设置和使用开发环境

使用 Meson 进行高级构建#

Meson 支持标准环境变量 CCCXXFC 以选择特定的 C、C++ 和/或 Fortran 编译器。这些环境变量在 Meson 文档中的参考表 中进行了说明。

请注意,环境变量仅从干净构建中应用,因为它们会影响配置阶段(即 meson 设置)。增量重建不会对环境变量中的更改做出反应 - 您必须运行 git clean -xdf 并进行完全重建,或运行 meson setup --reconfigure

有关包括选择编译器、设置自定义编译器标志和控制并行性在内的更多选项,请参阅 编译器选择和自定义构建(来自 SciPy 文档)和 Meson FAQ

测试#

务必测试您的构建。为了确保一切保持正常,请查看是否所有测试都通过。

测试套件需要其他依赖项,可以使用以下命令轻松安装:

python -m pip install -r test_requirements.txt

使用以下命令运行完整测试套件:

cd ..  # avoid picking up the source tree
pytest --pyargs numpy

有关测试的详细信息,请参阅 测试构建

加速的 BLAS/LAPACK 库#

NumPy 搜索优化的线性代数库,例如 BLAS 和 LAPACK。有特定的顺序来搜索这些库,如下所述以及 meson_options.txt 文件中所述。

交叉编译#

有关交叉编译说明,请参阅 交叉编译Meson 文档