Using via numpy.distutils
¶
numpy.distutils
is part of NumPy, and extends the standard Python
distutils
module to deal with Fortran sources and F2PY signature files, e.g.
compile Fortran sources, call F2PY to construct extension modules, etc.
Example
Consider the following setup_file.py
for the fib
and scalar
examples from Three ways to wrap - getting started section:
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.
Extensions to distutils
¶
numpy.distutils
extends distutils
with the following features:
Extension
class argumentsources
may contain Fortran source files. In addition, the listsources
may contain at most one F2PY signature file, and in this case, 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 onepython module
block.If
sources
do not contain a signature file, then F2PY is used to scan Fortran source files to construct wrappers to the Fortran codes.Additional options to the F2PY executable can be given using the
Extension
class argumentf2py_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.
Additionally, the
build_ext
andbuild_clib
commands are also enhanced to support Fortran sources.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, one can choose different Fortran compilers by using the
build_ext
command option--fcompiler=<Vendor>
. Here<Vendor>
can be one of the following names (onlinux
systems):absoft compaq fujitsu g95 gnu gnu95 intel intele intelem lahey nag nagfor nv pathf95 pg vast
See
numpy_distutils/fcompiler.py
for an up-to-date list of supported compilers for different platforms, or runpython -m numpy.f2py -c --help-fcompiler