Упаковка старого Фортрана в Python. Можно ли использовать setuptools и numpy.distutils?
Я пытаюсь сделать дистрибутив пакета Python для некоторых популярных кодов Фортрана в моей области. Я хочу использовать самый стандартный подход с setup.py
файл. Связанное с этим вычисление было полезно для изучения того, как обернуть расширения Фортрана.
При использовании этого подхода я заметил некоторую путаницу при смешивании setuptools
а также numpy.distutils
, Это плохая практика смешивать два? По состоянию на 2015 год, кажется, предпочтительнее использовать setuptools
как можно больше.
Тем не менее, я хотел бы построить Fortran
расширения таким образом, который совместим с numpy.
Поэтому я хотел бы импортировать из numpy.distutils
получить Extension
а также setup
,
Я использую следующий базовый подход:
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})
Кажется, это работает, но у меня есть вопросы.
- Это хорошая практика, чтобы смешивать
setuptools
а такжеnumpy.distribute
? - Имеет ли значение порядок их импорта? Должен ли я всегда импортировать
setuptools
первый? - Существует ли официальный обновленный учебник по расширению упаковки для
numpy
? Возможно, даже один с некоторыми обсуждениями расширений Фортрана?
Некоторые ссылки
1 ответ
Кажется, это работает, но у меня есть вопросы.
- Это хорошая практика - смешивать setuptools и numpy.distribute?
- Имеет ли значение порядок их импорта? Должен ли я всегда импортировать setuptools в первую очередь?
- Существует ли официальный обновленный учебник по расширению упаковки для numpy? Возможно, даже один с некоторыми обсуждениями расширений Фортрана?
Вам не нужно больше использовать numpy.distribute.
^^ Не обязательно
В частности, для упаковки кода Fortran в Numpy существует популярный f2py. Однако я лично считаю необходимые аннотации кода избыточными, потому что хороший фортран-код содержит всю необходимую информацию.
(предупреждающий персональный проект подключите ниже)
Недавно был выпущен очиститель fmodpy, который автоматически генерирует весь необходимый код оболочки в понятном и понятном интерфейсе. Он поддерживает pre-Fortran90, но лучше всего подходит для Fortran90 и более поздних версий. Его можно использовать для создания чистого дистрибутива вместе с интерфейсом кода на python (предполагается, что пользователи установили gfortran).