NumPy从源码构建

本文提供了从源代码构建NumPy的详细指南,包括先决条件、基本安装、并行构建以及解决FORTRAN ABI不匹配问题。建议在构建前确保拥有正确的FORTRAN编译器,并使用适当的BLAS/LAPACK库。测试构建是确保稳定性的关键,可以运行`runtests.py`进行验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此处给出了从源代码构建NumPy的一般概述,以及单独给出的特定平台的详细说明。
先决条件

构建NumPy需要安装以下软件:
基本安装

要安装NumPy运行:

pip install .

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

python setup.py build_ext --inplace

NumPy构建系统使用setuptools(从numpy 1.11.0开始,之前很简单distutils)和numpy.distutils。使用virtualenv应该按预期工作。

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

确保测试您的构建。为了确保一切都保持稳定,请查看是否所有测试都通过:

$ python runtests.py -v -m full

有关测试的详细信息,请参阅测试版本。

并行构建

从NumPy 1.10.0起,它也可以用以下方式进行并行构建:

python setup.py build -j 4 install --prefix $HOME/.local

这将在4个CPU上编译numpy并将其安装到指定的前缀中。要执行并行的就地构建,请运行:

python setup.py build_ext --inplace -j 4

也可以通过环境变量指定构建作业的数量
NPY_NUM_BUILD_JOBS。
FORTRAN ABI不匹配

两个最受欢迎的开源fortran编译器是g77和gfortran。不幸的是,它们不兼容ABI,
这意味着你应该避免混合使用彼此构建的库。特别是,如果您的blas / lapack / atlas是使用g77构建的,
那么在构建numpy和scipy时 必须 使用g77;
相反,如果你的地图集是用gfortran 构建的,你 必须 用gfortran
建立numpy / scipy。这适用于可能使用了不同FORTRAN编译器的大多数其他情况。

选择fortran编译器

用gfortran构建:

python setup.py build --fcompiler=gnu95

有关更多信息,请运行帮助命令:

python setup.py build --help-fcompiler

如何检查BLAS / LAPACK /地图集ABI

检查用于构建库的编译器的一种相对简单且可靠的方法是在库上使用ldd。
如果libg2c.so是依赖项,则表示已使用g77。
如果libgfortran.so是依赖项,则使用gfortran。
如果两者都是依赖关系,这意味着两者都已被使用,这几乎总是一个非常糟糕的主意。
加速BLAS / LAPACK库

NumPy搜索优化的线性代数库,如BLAS和LAPACK。搜索这些库有特定的顺序,如下所述。

BLAS

库的默认顺序是:

MKL
    BLIS
    OpenBLAS
    ATLAS
    加速(MacOS)
    BLAS(NetLIB)

更多请见:http://www.mark-to-win.com/tutorial/52204.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值