f90wrap в Windows (оболочка Python для Fortran 90)

У меня есть программа Python, которая вызывает подпрограммы Fortran. Эти подпрограммы Фортрана упакованы с помощью f90wrap (https://github.com/jameskermode/f90wrap) и Я убедился, что установка работает корректно в Linux и Mac OSX. Сейчас я пытаюсь заставить установку одинаково хорошо работать в Windows (потому что я сотрудничаю с людьми, которые иногда не могут переключиться на Linux).

У меня есть gfortran, работающий с установкой MinGW, и я убедился, что программы Fortran компилируются и работают без ошибок. Я также убедился, что установка Python 2.7 работает без проблем, и смог без проблем использовать pip для добавления модулей numpy, matplotlib и scipy. И MinGW, и Python являются 64-разрядными и работают в Windows 10. У меня также есть CMake для создания файлов Makefile, которые компилируют автономные программы на Фортране с использованием mingw-make, поэтому остается только одна часть (чтобы все работало в Windows) — убедиться, что оболочка Python для Fortran-90 работает. Вот где я столкнулся с некоторыми проблемами.

Я запускаю mingw-make в Powershell (который, я полагаю, выполняется в cmd.exe).

Q1: установка pip для f90wrap завершилась неудачно из-за ошибки абсолютного/относительного пути (https://github.com/jameskermode/f90wrap/issues/73)

A1: Я скачал исходный код и запустил "python setup.py install", и это тоже застряло. Я столкнулся с ошибкой «multiple_definition» в Windows 10, Python 2.7 и mingw-w64.

F:/Programs/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/7.2.0/../../../../x86_64-w64-mingw32/lib/.. /lib/libmingw32.a(lib64_libmingw32_a-atonexit.o):atonexit.c:(.text+0xc0): множественное определение atexit' F:\Programs\Python\libs/libmsvcr90.a(deoks01081.o):(. text+0x0): сначала определено здесь F:/Programs/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/7.2.0/../../../../x86_64- w64-mingw32/lib/../lib/libmingw32.a(lib64_libmingw32_a-mingw_helpers.o):mingw_helpers.c:(.text+0x0): множественное определение_decode_pointer' F:\Programs\Python\libs/libmsvcr90.a( deoks00231.o):(.text+0x0): сначала определено здесь F:/Programs/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/7.2.0/../../. ./../x86_64-w64-mingw32/lib/../lib/libmingw32.a(lib64_libmingw32_a-mingw_helpers.o):mingw_helpers.c:(.text+0x10): множественное определение `_encode_pointer' F:\Programs \Python\libs/libmsvcr90.a(deoks00241.o):(.text+0x0): впервые определено здесь collect2.exe: ошибка: ld вернул 1 ошибку состояния выхода: Команда "gcc -g -shared build\temp.w in-amd64-2.7\Release\f90wrap\arraydatamodule.o build\temp.win-amd64-2.7\Release\programs\python\lib\site-packages\numpy\f2py\src\fortranobject.o -LF:\Programs\ Python\libs -LF:\Programs\Python\PCbuild\amd64 -lpython27 -lmsvcr90 -o build\lib.win-amd64-2.7\f90wrap\arraydata.pyd" завершился с ошибкой со статусом выхода 1


person ansri    schedule 20.01.2018    source источник
comment
Пожалуйста, используйте fortran для всех вопросов по Fortran. Также используйте форматирование code для кода и сообщений об ошибках. Не используйте слишком много жирного шрифта, это выглядит очень плохо. Пожалуйста, отредактируйте вопрос и исправьте форматирование.   -  person Vladimir F    schedule 21.01.2018
comment
f90wrap — это программа на Python. Remlove .exe и запустите его как python f90wrap.   -  person Pierre de Buyl    schedule 22.01.2018
comment
@PierredeBuyl: спасибо, я попробовал это и продвинулся дальше, прежде чем застрял в процессе. Я отредактирую свой вопрос с обновлением   -  person ansri    schedule 22.01.2018
comment
Это не проблема фортрана, поэтому я соответствующим образом обновил теги. @PierredeBuyl: Спасибо, я немного продвинулся, прежде чем столкнулся с другой проблемой. Вопрос обновлен.   -  person ansri    schedule 24.01.2018