Мне удалось обернуть набор источников Fortran 90 вручную, используя f2py.Для этого я сгенерировал файл подписи, как описано в: http://docs.scipy.org/doc/numpy/user/c-info.python-as-glue.html, и я могу получить .so, который я могу вызвать из некоторых файлов интерфейса Python.
Теперь я хочу создать пакет изэто, которое автоматически построит расширение Fortran.Единственным дополнением в папке, содержащей исходные файлы и файл подписи Fortran, теперь является файл setup.py со следующим содержимым:
from numpy.distutils.core import setup, Extension
from numpy.distutils.misc_util import Configuration
DISTNAME = 'greengard'
def configuration(parent_package='',top_path=None):
config = Configuration(DISTNAME, parent_package, top_path)
# the Fortran sources
f90_sources = ['_greengard.pyf'
'nufft1df90.f',
'nufft2df90.f',
'nufft3df90.f',
'next235.f',
'dfftpack.f',
]
config.add_extension('_greengard', f90_sources)
return config
if __name__ == "__main__":
setup(configuration=configuration)
Затем активировал virtualenv и попытался установить пакет
python setup.py install
Но в конце получите следующую ошибку:
creating build/temp.linux-x86_64-2.7/build/src.linux-x86_64-2.7/greengard
compile options: '-Ibuild/src.linux-x86_64-2.7 -I/usr/lib/python2.7/dist-packages/numpy/core/include -I/usr/include/python2.7 -c'
gcc: build/src.linux-x86_64-2.7/greengard/_greengardmodule.c
gcc: build/src.linux-x86_64-2.7/fortranobject.c
compiling Fortran sources
Fortran f77 compiler: /usr/bin/gfortran -Wall -ffixed-form -fno-second-underscore -fPIC -O3 -funroll-loops
Fortran f90 compiler: /usr/bin/gfortran -Wall -fno-second-underscore -fPIC -O3 -funroll-loops
Fortran fix compiler: /usr/bin/gfortran -Wall -ffixed-form -fno-second-underscore -Wall -fno-second-underscore -fPIC -O3 -funroll-loops
compile options: '-Ibuild/src.linux-x86_64-2.7 -I/usr/lib/python2.7/dist-packages/numpy/core/include -I/usr/include/python2.7 -c'
error: _greengard.pyfnufft1df90.f: No such file or directory
Первая строка после запуска setup.py дала:
non-existing path in '': '_greengard.pyfnufft1df90.f'
Но процесс установки продолжается, и расширение Fortran кажетсябыть скомпилированным (отображаемые строки выглядят так, как я получаю, запустив f2py вручную).
Я пытался найти решение из примеров, доступных онлайн, но большинство из них были слишком просты, чтобы быть полезными.Может ли кто-нибудь с опытом в упаковке Python помочь мне в этом, пожалуйста?