我已經用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