Расширения Fortran в ›=Python 3.5

Я пытаюсь создать расширения Python, которые включают код f90 для Python 3.5 и новее. Раньше я мог использовать проект MinGWPy для создания расширений с помощью gfortran. Однако MinGWPy не поддерживает Python 3.5 и новее и недавно был прекращен.

Как я могу создавать расширения Python для версии 3.5 и новее, включающие Fortran? В частности, имейте в виду используемую систему сборки: numpy.distutils и то, как она статически связывает библиотеки Fortran напрямую с оболочкой, скомпилированной с помощью компилятора C по умолчанию.


person Paul Wells    schedule 28.12.2017    source источник
comment
Насколько мне известно, больше невозможно компилировать расширения fortran... Почему вы так считаете? С какими проблемами вы столкнулись? В чем именно компилятор C несовместим с gfortran? Я использовал код gfortran с кодом Microsoft C++, используя взаимодействие Fortran_C (также известное как привязка iso c).   -  person Vladimir F    schedule 28.12.2017
comment
bugs.python.org/issue4709   -  person Paul Wells    schedule 28.12.2017
comment
Так что это больше о gcc, а не о gfortran. Речь идет о слое оболочки C. В этом случае вы не можете просто определить макрос, упомянутый в первом комментарии в вашей ссылке? Пожалуйста, включите в вопрос всю важную информацию, которая у вас есть, без этой ссылки вопрос довольно неясен.   -  person Vladimir F    schedule 28.12.2017
comment
mingwpy.github.io/proposal_december2015.html Эта ссылка немного понятнее. Я задал именно тот вопрос, на который хотел получить ответ. Если есть сложный метод, требующий множества модификаций моего кода, то это не то решение, которое я могу использовать.   -  person Paul Wells    schedule 28.12.2017
comment
Я задал именно тот вопрос, на который хотел получить ответ. Пожалуйста, поймите, что если вопрос нуждается в пояснениях в комментариях, он, скорее всего, неполный или ему не хватает мотивирующей информации, которая часто очень важна. Комментарии можно удалить в любой момент, поэтому это должно быть внутри вопроса, а не в комментариях.   -  person Vladimir F    schedule 07.01.2018
comment
@VladimirF Это совершенно правильный вопрос для тех, кто знает предысторию. Да, у вас, вероятно, есть доступ к Intel Fortran, так что это не повлияет на вас. Но когда вы используете MSVC для создания расширений Python с кодом на Фортране, до недавнего времени не было доступных бесплатных вариантов.   -  person xaav    schedule 07.01.2018
comment
для тех, кто знает предысторию: я просил включить в вопрос предысторию, не более того.   -  person Vladimir F    schedule 07.01.2018
comment
Это вопрос приемлемый сейчас? Основная причина, по которой ваша идея не сработает, заключается в том, что системы сборки на основе Python довольно ужасны, но при этом требуется огромное количество устаревшего кода.   -  person xaav    schedule 07.01.2018
comment
Я думаю, что да.   -  person Vladimir F    schedule 07.01.2018
comment
Спасибо за правки и удаление минуса. Однако есть одно замечание: я использовал компиляторы и набор инструментов от MinGW, а не от проекта MinGWPy.   -  person Paul Wells    schedule 08.01.2018


Ответы (1)


Вы можете создавать расширения Python для 3.5+ с помощью flang. Это:

conda config --add channels conda-forge
conda install flang

Раскрытие информации: я являюсь участником проекта flang.

person xaav    schedule 07.01.2018
comment
Это выглядит интересно. Работает ли flang с f2py «из коробки»? - person Paul Wells; 15.01.2018
comment
flang требует numpy 1.14 - person xaav; 16.01.2018
comment
Оно работает!! Большое спасибо @xaav. Вы бы порекомендовали сохранить компилятор mingwpy C или установить инструменты Microsoft? - person Paul Wells; 25.02.2018