从源代码构建#

在您的计算机上本地构建使您可以完全控制构建选项。如果您是熟悉使用命令行的 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 和 LAPACK中所述。

  4. 赛通

    为了构建 NumPy,您需要最新版本的 Cython。

  5. NumPy 源代码

    按照贡献 NumPy中的说明克隆存储库。

笔记

从版本 1.26 开始,NumPy 将采用 Meson 作为其构建系统(有关更多详细信息,请参阅 numpy.distutils 的状态和迁移建议以及 了解 Meson。)

基本安装#

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

pip install .

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

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

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

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

用介子进行高级建筑#

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

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

有关更多选项,包括选择编译器、设置自定义编译器标志和控制并行性,请参阅编译器选择和自定义构建 (来自 SciPy 文档)和Meson 常见问题解答

测试#

确保测试您的构建。为了确保一切都保持良好状态,请查看所有测试是否通过。

测试套件需要额外的依赖项,可以通过以下方式轻松安装:

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 文档