Мне нужно запустить существующую модель, которая включает в себя несколько файлов Fortran и файл Python.
Чтобы запустить файл Python, я пытаюсь преобразовать коды Fotran в модули Python с помощью f2py. У меня не было проблем с более простыми файлами Fortran, но в случае, когда файл Fortran использует другой модуль Fortran (second.mod), это не удалось. F2py отлично работает при создании файла .so, но при импорте выдает ошибку:
>>> import first
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: ./firstmod.so: undefined symbol: __second_MOD_secondr
Чтобы решить эту проблему, я использовал приведенную ниже команду, которая также предлагается в другой теме (F2PY не находит модуль):
f2py -c --fcompiler=gfortran -I"~/Documents" --fcompiler=gfortran -I"~/Documents" -lsecond -m first first.f90 -m first first.f90
Но на этот раз я получаю эту ошибку:
error: unknown file type '' (from '-m')
В этот момент я не знаю, что делать. Поскольку модель написана не мной, я не могу ею поделиться. Я использую Ubuntu 16.04 LTS.
Чтобы уточнить, на самом деле есть 4 модуля фортрана, но теперь у меня возникли проблемы с подключением только двух из них (первого и второго). В первом есть такие строки:
use second(...)
call secondr(...)
И я думаю, мне нужно найти правильный способ включения этого второго файла .mod в создание моего модуля Python. Команда, которую я предоставил, включает дубликаты, но, поскольку я новичок в этом, я просто скопировала ее из другой темы без вопросов.
Спасибо за помощь.
-m first first.f90
->unknown file type '' (from '-m')
— Нет ли опечатки? Вы только что имели в виду-m first.f90
? - person 9000   schedule 05.10.2017-m first first.f90
дублируется. - person Pierre de Buyl   schedule 05.10.2017first.f90
или где другой модуль Fortran? - person Vladimir F   schedule 06.10.2017-lsecond
наsecondmod.o
в конце команды build f2py. Связывая, вы оставляете задачу загрузки общего объекта после сборки. Должна быть возможность исправить это, но я бы попробовал вместо этого метод сборки файла.o
(файл.o
получается путем прямой компиляции, т.е.gfortran -c secondmod.f90
). - person Pierre de Buyl   schedule 06.10.2017