python numpy fortran setuptools f2py

Embalaje heredado Fortran en Python. ¿Está bien usar setuptools y numpy.distutils?



f2py (1)

Esto parece funcionar pero tengo preguntas.

  1. ¿Es generalmente una buena práctica mezclar setuptools y numpy.distribute?
  2. ¿Importa el pedido que les importo? ¿Debo importar siempre las herramientas de configuración primero?
  3. ¿Existe un tutorial oficial actualizado para empaquetar extensiones a numpy? ¿Quizás incluso uno con alguna discusión sobre las extensiones de Fortran?
  1. Ya no debería necesitar usar numpy.distribute.

  2. ^^ No es necesario

  3. Particularmente para envolver código fortran con numpy, existe el popular f2py . Sin embargo, personalmente considero que las anotaciones de código necesarias son redundantes, porque un buen código fortran contiene toda la información necesaria.

( advertencia proyecto personal enchufe a continuación )

Recientemente se lanzó el limpiador fmodpy , que genera automáticamente todo el código contenedor necesario en una interfaz comprensible y limpia. Es compatible con versiones anteriores a Fortran90, pero es más adecuado para Fortran90 y posteriores. Podría usarse para generar una distribución limpia junto con la interfaz de código de Python (suponiendo que los usuarios tengan instalado gfortran).

Estoy tratando de hacer una distribución de paquete de Python para algunos códigos populares de Fortran en mi campo. Quiero que use el enfoque más estándar con un archivo setup.py . La pregunta relacionada fue útil para aprender a envolver extensiones Fortran .

Al usar este enfoque, noté un comportamiento confuso al mezclar setuptools y numpy.distutils . ¿Es una mala práctica mezclar los dos? A partir de 2015, parece preferible utilizar las setuptools tanto como sea posible.

Sin embargo, me gustaría construir extensiones de Fortran de una manera que sea compatible con numpy. Por lo tanto, me gustaría importar desde numpy.distutils para obtener Extension y setup .

Estoy usando el siguiente enfoque básico:

from setuptools.command.develop import develop from numpy.distutils.core import Extension, setup ext_modules=[Extension("my_package.fortran_mod", sources=[''src/fortran_mod.f''])] class MyDevelop(develop): def run(self): my_script() develop.run(self) setup( ... ext_modules=ext_modules, cmdclass={''develop'':MyDevelop})

Esto parece funcionar pero tengo preguntas.

  1. ¿Es generalmente una buena práctica mezclar setuptools y numpy.distribute ?
  2. ¿Importa el pedido que les importo? ¿Debo importar siempre las setuptools primero?
  3. ¿Existe un tutorial oficial actualizado para empaquetar extensiones a numpy ? ¿Quizás incluso uno con alguna discusión sobre las extensiones de Fortran?

Algunos enlaces

https://www.youtube.com/watch?v=R4yB-8tB0J0

http://www.fortran90.org/src/best-practices.html#interfacing-with-python