Я знаю об этом и использовал f2py2e, чтобы обернуть какой-то старый код Fortran 77, но я понимаю, что он не работает с более новым кодом Fortran 95. Я исследовал, что мне следует использовать, и натолкнулся на fwrap и G3 f2py, ни один из которых, кажется, не дает никакого объяснения их текущего состояния или того, как их использовать (помимо базового использования).
Я также видел, что версия f2py имеет возможность использовать f2py третьего поколения, но это прокомментировано как неработающая. Учитывая это, я не знаю, какой проект я должен использовать для универа. Какой из них я должен использовать для нового кода?
PS Это в основном тот же вопрос, что и /programming/10665717/current-best-method-for-wrapping-modern-fortran-code-with-python. Было высказано предположение, что задаваемые здесь вопросы могут дать лучшие ответы. ,
Ответы:
Вы можете использовать встроенный модуль Python ctypes, как описано на fortran90.org . Это довольно просто и не требует каких-либо внешних зависимостей. Также очень полезен помощник типа ndpointer arg.
источник
Я лично использую f2py для этого. Тем не менее, Фортран, который я пишу для f2py, на самом деле не современный Фортран, а скорее F90 свободной формы с модулями. Я не использую предполагаемые формы или пользовательские типы. Этот метод все еще работает очень хорошо для меня.
Есть ресурс, которым я хочу поделиться относительно использования C как части упаковки. Остальная часть этой страницы тоже рекомендуется.
источник
cython
команды, и уменьшить частичное совпадение между изменением кода на языке Fortran или кода Python и быстрым налаживанием работы.Документация по f2py действительно не так уж велика. Я нахожусь в процессе перемещения своих собственных проектов из f2py в Cython . Несмотря на то, что Cython можно использовать для переноса кода C, я обнаружил, что он наиболее полезен для создания нового высокопроизводительного кода. Если вы намереваетесь написать новый код на Фортране, обернуть его и вызвать его на Python, я рекомендую вместо этого использовать Cython. Таким образом, вы можете написать код Python, и, если есть узкие места в производительности, вы перенесете его в Cython с небольшими изменениями.
источник
f90wrap построен поверх f2py и автоматически генерирует оболочки Python для базовой базы кода Fortran, включая доступ к производным типам. Набор простых примеров показывает, как это работает.
источник
Вы могли бы использовать FortWrap, чтобы получить вас на полпути. Это создаст интерфейс C ++ для вашего кода на Фортране, который затем можно будет обернуть SWIG, чтобы получить интерфейс Python. Мы делаем это на довольно большой базе кода на Фортране, и он работает довольно хорошо (на самом деле, FortWrap был разработан членом нашей команды именно для этой цели).
источник
fwrap
специально предназначен для Fortran90 / 95 и использует тот же программный стек, что иf2py
.источник
f2py
на F90. Он также имеет очень низкий входной барьер. Я был рад, что нашел это.f2py
поддерживает современный фортран (предполагаемые массивы и т. д.), см. пример скриптаКроме того, для экспериментов с кодом Fortran я бы порекомендовал магию IPython , которая проста в установке и очень удобна (она также зависит от f2py).
источник
Вот список оболочек Fortran для Python:
https://github.com/mgaitan/fortran_magic/issues/4
источник