создание распространяемого модуля Python для Windows с помощью f2py - PullRequest
1 голос
/ 18 марта 2012

Я написал некоторый код на python и f2py, в основном используя linux.Все это прекрасно работает, но теперь я хотел бы поделиться этим с пользователями Windows, поэтому я пытаюсь создать модуль, который можно распространять среди пользователей, у которых не обязательно есть gfortran или gcc.У меня есть доступ к Windows XP Box, я использую MINGW с Gfortran.Я могу скомпилировать и использовать модуль на этой машине, но на других машинах созданный pyd, похоже, требует libgcc dll и libgfortran.Вот пример из http://www.scipy.org/F2PY_Windows:

subroutine hello ()
   write(*,*)'Hello from Fortran90!!!'
end subroutine hello

Компиляция с

python c:\path\to\python\scripts\f2py.py -c \
       --fcompiler=gnu95 --compiler=mingw32 \
        -lmsvcr71 -m foo foo.f90

Это работает, как и ожидалось, на машине, с которой я скомпилировал ее, но если я скопирую ее на другую машину, яget

DLL load failed: The specified module could not be found.

Используя обходчик зависимостей, я вижу, что он не может найти dll для libgcc_s_dw2-1.dll и libgfortran-3.dll.Можно ли создать pyd, который я могу распространять, не предполагая, что у пользователя есть gcc и gfortran?Я использую python2.7 на обеих машинах, оба 32-битных.Один из них является XP, другой Windows 7.

1 Ответ

1 голос
/ 21 марта 2012

В качестве альтернативы включению dll libgcc и libgfortran в пакет, должна быть возможность связываться со статическими версиями этих библиотек, если они доступны в вашей сборке MinGW.(По крайней мере, я предполагаю, что это так. У меня нет опыта работы с Python или pyds, но это возможно для обычных исполняемых файлов и библиотек.)

Посмотрите на параметр -static для ссылок, или если вам нужно большеуправление -static-libgcc и -static-libgfortran.

...