El 27/08/2013 21:21, "Kyle Mandli" <[email protected]> escribió: > > On Tue, Aug 27, 2013 at 1:26 PM, Juan Luis Cano <[email protected]> wrote: >> >> >> El 27/08/2013 17:27, "Kyle Mandli" <[email protected]> escribió: >> >> >> > >> > On Tue, Aug 27, 2013 at 6:46 AM, Juan Luis Cano <[email protected]> wrote: >> >> >> >> I'm having some problems to properly build a module written in Fortran >> >> 90 using numpy.distutils. It only contains one subroutine, but: >> >> >> >> * If I write a .f90 file with the single subroutine (no module .. >> >> contains), then f2py tries to compile it using a f77 compiler, and >> >> that's not what I want. >> >> * If I put it inside a module definition, then at the final >> >> compilation stage modulef2pywrapper.c is missing the corresponding >> >> .mod file and I have to make the build fail, then copy the .mod from >> >> the temp directory and rebuild. Weird. >> >> >> >> On the other hand, with the second approach f2py creates a unnecessary >> >> level of nesting in the corresponding python module and I don't feel >> >> quite ok with that. >> >> >> >> What is the right way to do this? I find the documentation on >> >> numpy.distutils a bit lacking, I almost always find the solution by >> >> trial and error. I can push the code, it's a short file (part of the >> >> rewrite of odeint I'm doing in SciPy). >> >> >> >> Regards >> >> >> >> Juan Luis Cano >> >> _______________________________________________ >> >> NumPy-Discussion mailing list >> >> [email protected] >> >> http://mail.scipy.org/mailman/listinfo/numpy-discussion >> > >> > >> > You should be able to specify the compiler when invoking f2py, something like: >> > >> > f2py --fcompiler=$COMPILER -m $MODULE_NAME -c $SOURCE_FILE >> >> That won't work since gfortran is used for both F77 and F90. If you look on rules.py in f2py F77 wrappers are generated if the subroutine is not inside a module, and then the compilation fails because it contains invalid statements for F77. Bug? >> >> Any other suggestions? >> >> > Kyle >> >> >> > >> > _______________________________________________ >> > NumPy-Discussion mailing list >> > [email protected] >> > http://mail.scipy.org/mailman/listinfo/numpy-discussion >> > >> >> >> _______________________________________________ >> NumPy-Discussion mailing list >> [email protected] >> http://mail.scipy.org/mailman/listinfo/numpy-discussion >> > > Can you post your fortran source code? The other key would be see what f2py thinks it's doing, for instance in the output of f2py there two lines that read: > > ``` > Reading fortran codes... > Reading file 'test_file.f90' (format:free) > ``` > > For the following source code: > > ``` > subroutine my_func(a, b) > > implicit none > > integer, intent(in) :: a > real(kind=8), intent(out) :: b > > b = real(a, kind=8) * 5.d0 > > end subroutine my_func > ``` > > compiled with `f2py -c test_file.f90 -m my_module` >
Solved! It was as easy as adding both the .pyf and the .f90 to sources, I was having a silly name conflict. I will push the source next week. Thanks! > _______________________________________________ > NumPy-Discussion mailing list > [email protected] > http://mail.scipy.org/mailman/listinfo/numpy-discussion >
_______________________________________________ NumPy-Discussion mailing list [email protected] http://mail.scipy.org/mailman/listinfo/numpy-discussion
