使用f2py创建可分发的窗口python模块

时间:2012-03-18 05:18:13

标签: python windows gfortran f2py

我用python和f2py编写了一些代码,主要使用linux。这一切都很好,但现在我想与Windows用户分享这个,所以我试图制作一个可以分发给不一定有gfortran或gcc的用户的模块。我可以访问一个Windows XP的盒子,我正在和gfortran一起使用mingw。我可以在该机器上编译和使用该模块,但在其他机器上,创建的pyd似乎需要dll的libgcc和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

这在我编译它的机器上按预期工作,但是如果我将它复制到另一台机器上,我会得到

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

使用依赖walker,我发现找不到libgcc_s_dw2-1.dll和libgfortran-3.dll的dll。是否有可能创建一个我可以分发而不假设用户有gcc和gfortran的pyd?我在两台机器上使用python2.7,都是32位。一个是xp,另一个是Windows 7.

1 个答案:

答案 0 :(得分:1)

作为在包中包含libgcclibgfortran dll的替代方法,应该可以链接这些库的静态版本,只要它们在您的MinGW构建中可用。 (至少,我认为它是。我没有Python或pyds的经验,但它可以用于常规可执行文件和dll。)

查看-static选项以进行关联,或者如果您需要更多控制-static-libgcc-static-libgfortran