上一主题

使用F2PY

下一主题

高级F2PY使用

Using via numpy.distutils

numpy.distutils是NumPy扩展标准Python distutils的一部分,用于处理Fortran源和F2PY签名文件,例如编译Fortran源码,调用F2PY构建扩展模块等。

请考虑以下设置文件

from __future__ import division, absolute_import, print_function

from numpy.distutils.core import Extension

ext1 = Extension(name = 'scalar',
                 sources = ['scalar.f'])
ext2 = Extension(name = 'fib2',
                 sources = ['fib2.pyf', 'fib1.f'])

if __name__ == "__main__":
    from numpy.distutils.core import setup
    setup(name = 'f2py_example',
          description       = "F2PY Users Guide examples",
          author            = "Pearu Peterson",
          author_email      = "[email protected]",
          ext_modules = [ext1, ext2]
          )
# End of setup_example.py

运行

python setup_example.py build

将构建两个扩展模块scalarfib2到构建目录。

numpy.distutils使用以下功能扩展distutils

  • Extension类参数sources可能包含Fortran源文件。此外,列表sources可以包含至多一个F2PY签名文件,然后扩展模块的名称必须与在签名文件中使用的<modulename>相匹配。假设F2PY签名文件只包含一个python 模块块。

    如果sources不包含签名文件,则F2PY用于扫描Fortran源文件以进行例行签名,以构建Fortran代码的包装器。

    可以使用Extension类参数f2py_options给出F2PY过程的其他选项。

  • 定义了以下新的distutils命令:

    build_src

    构建Fortran包装扩展模块,等等。

    config_fc

    更改Fortran编译器选项

    以及build_extbuild_clib命令被增强以支持Fortran源。

    python <setup.py file> config_fc build_src build_ext --help
    

    以查看这些命令的可用选项。

  • 当构建包含Fortran源的Python包时,可以使用build_ext命令选项--fcompiler=<Vendor>选择不同的Fortran编译器。这里<Vendor>可以是以下名称之一:

    absoft sun mips intel intelv intele intelev nag compaq compaqv gnu vast pg hpux
    

    有关支持的编译器或运行的最新列表,请参见numpy_distutils/fcompiler.py

    f2py -c --help-fcompiler