numpy.distutils
numpy.distutils is part of NumPy extending standard Python distutils to deal with Fortran sources and F2PY signature files, e.g. compile Fortran sources, call F2PY to construct extension modules, etc.
distutils
Example
Consider the following setup file:
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
Running
python setup_example.py build
will build two extension modules scalar and fib2 to the build directory.
scalar
fib2
numpy.distutils extends distutils with the following features:
Extension class argument sources may contain Fortran source files. In addition, the list sources may contain at most one F2PY signature file, and then the name of an Extension module must match with the <modulename> used in signature file. It is assumed that an F2PY signature file contains exactly one python module block.
Extension
sources
<modulename>
python module
If sources does not contain a signature files, then F2PY is used to scan Fortran source files for routine signatures to construct the wrappers to Fortran codes.
Additional options to F2PY process can be given using Extension class argument f2py_options.
f2py_options
The following new distutils commands are defined:
build_src
to construct Fortran wrapper extension modules, among many other things.
config_fc
to change Fortran compiler options
as well as build_ext and build_clib commands are enhanced to support Fortran sources.
build_ext
build_clib
Run
python <setup.py file> config_fc build_src build_ext --help
to see available options for these commands.
When building Python packages containing Fortran sources, then one can choose different Fortran compilers by using build_ext command option --fcompiler=<Vendor>. Here <Vendor> can be one of the following names:
--fcompiler=<Vendor>
<Vendor>
absoft sun mips intel intelv intele intelev nag compaq compaqv gnu vast pg hpux
See numpy_distutils/fcompiler.py for up-to-date list of supported compilers or run
numpy_distutils/fcompiler.py
f2py -c --help-fcompiler