我已经用python和f2py编写了一些代码,主要是使用linux。这一切工作正常,但现在我想与Windows用户分享这个,所以我正在尝试制作一个模块,可分发给不一定拥有gfortran或gcc的用户。我可以访问windows xp框,我正在用gfortran使用mingw。我可以在该机器上编译和使用该模块,但在其他机器上,pyd创建的似乎需要dll的libgcc和libgfortran。下面是http://www.scipy.org/F2PY_Windows一个例子:使用f2py创建可分发的窗口python模块
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。是否有可能创建一个我可以在不假设用户拥有gcc和gfortran的情况下分发的pyd?我在两台机器上都使用python2.7,都是32位。一个是XP,其他窗口7.
为什么不重新分配mingw的libgcc_s_dw2-1.dll和libgfortran-3.dll与pyd? – cgohlke 2012-03-18 08:22:31
那么,最终我想使用setup.py来为模块构建一个二进制文件。我不知道如何将dll添加到二进制文件中。 – rjad 2012-03-18 10:55:27
使用distutils package_data或data_files(http://docs.python.org/distutils/setupscript.html) – cgohlke 2012-03-18 17:04:09