用f2py创build可分发的windows python模块

我用pythonf2py编写了一些代码,主要是使用linux。 这一切工作正常,但现在我想与Windows用户分享这个,所以我正在试图做一个模块,可分发给用户谁不一定有gfortran或gcc。 我有机会访问一个Windows XP的盒子,我正在用gfortran使用mingw。 我可以在该机器上编译和使用模块,但在其他机器上,pyd创build似乎需要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,我看到它找不到dll的libgcc_s_dw2-1.dll和libgfortran-3.dll。 是否可以创build一个我可以分发而不假设用户有gcc和gfortran的pyd? 我在两台机器上都使用了python2.7,都是32位的。 一个是XP,其他的Windows 7。

Solutions Collecting From Web of "用f2py创build可分发的windows python模块"

作为在包中包含libgcclibgfortran dll的替代方案,应该可以链接到这些库的静态版本,只要它们在您的MinGW版本中可用。 (至少,我假设是这样的,我对Python或者pyds没有经验,但是对于普通的可执行文件和dll是可能的)。

看看链接的-static选项,或者如果你需要更多的控制-static-libgcc-static-libgfortran