У меня есть программа 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
code
для кода и сообщений об ошибках. Не используйте слишком много жирного шрифта, это выглядит очень плохо. Пожалуйста, отредактируйте вопрос и исправьте форматирование. - person Vladimir F   schedule 21.01.2018.exe
и запустите его какpython f90wrap
. - person Pierre de Buyl   schedule 22.01.2018