F2PY 和 Windows Intel Fortran#
截至 NumPy 1.23,仅支持经典 Intel 编译器 ( ifort ).
备注
在过渡到 LLVM 支持的 ifx/icc 系列编译器期间,beta 软件的许可限制 have been relaxed .但是,由于与 disassembly of components and liability 相关的问题,本文档不认可在下游项目中使用英特尔.
Python Intel 安装和 Classic Intel C/C++ Compiler 均不是必需的.
Intel Fortran Compilers 提供一个组合安装程序,其中包含 Classic 和 Beta 版本;这些版本也需要大约 1.5 GB 左右的空间.
我们将考虑生成 Fibonnaci 数列的经典示例, fib1.f ,如下所示:
C FILE: FIB1.F
SUBROUTINE FIB(A,N)
C
C CALCULATE FIRST N FIBONACCI NUMBERS
C
INTEGER N
REAL*8 A(N)
DO I=1,N
IF (I.EQ.1) THEN
A(I) = 0.0D0
ELSEIF (I.EQ.2) THEN
A(I) = 1.0D0
ELSE
A(I) = A(I-1) + A(I-2)
ENDIF
ENDDO
END
C END FILE FIB1.F
对于 cmd.exe 的爱好者,使用 Intel oneAPI 命令提示符是最简单的方法,因为它会为 ifort 和 msvc 加载所需的环境.还提供了辅助批处理脚本.
# cmd.exe
"C:\Program Files (x86)\Intel\oneAPI\setvars.bat"
python -m numpy.f2py -c fib1.f -m fib1
python -c "import fib1; import numpy as np; a=np.zeros(8); fib1.fib(a); print(a)"
Powershell 的使用稍微不太方便,并且此配置现在可以与 MSVC 一起使用,如下所示:
# Powershell
python -m numpy.f2py -c fib1.f -m fib1 --f77exec='C:\Program Files (x86)\Intel\oneAPI\compiler\latest\windows\bin\intel64\ifort.exe' --f90exec='C:\Program Files (x86)\Intel\oneAPI\compiler\latest\windows\bin\intel64\ifort.exe' -L'C:\Program Files (x86)\Intel\oneAPI\compiler\latest\windows\compiler\lib\ia32'
python -c "import fib1; import numpy as np; a=np.zeros(8); fib1.fib(a); print(a)"
# Alternatively, set environment and reload Powershell in one line
cmd.exe /k '"C:\Program Files (x86)\Intel\oneAPI\setvars.bat" && powershell'
python -m numpy.f2py -c fib1.f -m fib1
python -c "import fib1; import numpy as np; a=np.zeros(8); fib1.fib(a); print(a)"
请注意,您本地安装的 ifort 的实际路径可能会有所不同,并且需要相应地更新上面的命令.