[Numpy-discussion] f2py - how to use .pyf files?

Fernando Perez fperez.net at gmail.com
Fri Jul 18 18:39:55 EDT 2008


Howdy,

again f2py...  Since I can't seem to figure out how to pass the
--fcompiler option to f2py via setup.py/distutils, I decided to just
do things for now via a plain makefile.  But I'm struggling here too.
The problem is this: the call

f2py -c --fcompiler=gfortran -m text2 Text2.f90

works perfectly, and at some point in the output I see

customize Gnu95FCompiler
Found executable /usr/bin/gfortran

and the result is a nice text2.so module.  But I'd like to clean up a
bit the python interface to the fortran routines, so I did the usual

f2py -h text2.pyf Text2.f90

to create the .pyf, edited the pyf to adjust and 'pythonize' the
interface, and then when I try to build using this pyf, I get a crash
and the *same* gfortran option is now not recognized:

maqroll[felipe_fortran]> f2py -c --fcompiler=gfortran text2.pyf
Unknown vendor: "gfortran"
Traceback (most recent call last):
  File "/usr/bin/f2py", line 26, in <module>
    main()
  File "/home/fperez/usr/opt/lib/python2.5/site-packages/numpy/f2py/f2py2e.py",
line 560, in main
    run_compile()
  File "/home/fperez/usr/opt/lib/python2.5/site-packages/numpy/f2py/f2py2e.py",
line 536, in run_compile
    ext = Extension(**ext_args)
  File "/home/fperez/usr/opt/lib/python2.5/site-packages/numpy/distutils/extension.py",
line 45, in __init__
    export_symbols)
  File "/usr/lib/python2.5/distutils/extension.py", line 106, in __init__
    assert type(name) is StringType, "'name' must be a string"
AssertionError: 'name' must be a string


Note that it doesn't matter if I add Text2.f90 or not to the above
call, it still fails.

I could swear I'd done similar things in the past without any problems
(albeit with f77 sources), and the user guide

http://cens.ioc.ee/projects/f2py2e/usersguide/index.html#three-ways-to-wrap-getting-started

gives instructions very much along the lines of what I'm doing.  Are
these changes since the integration into numpy, regressions, or
mistakes on how I'm calling it?

Thanks for  any help,

f



More information about the NumPy-Discussion mailing list