Python可以使用 numpy庫中的 f2py 將Fortran程序封裝成pyd庫。在Linux環(huán)境下,按照官方文檔一步步操作就OK了。但是在windows系統(tǒng)就稍復(fù)雜些,一般資料都是建議通過 MinGW使用gfortran編譯器。 想要使用 Compaq Visual Fortran 6.6 編譯器 搭配 Microsoft Visual C++ Compiler for Python 2.7 環(huán)境,就需要踩坑了。
經(jīng)過嘗試,結(jié)論如下:
- windows下安裝numpy,最簡單的方法是下載預(yù)編譯好的二進制包 http://www.lfd.uci.edu/~gohlke/pythonlibs/
- 如果系統(tǒng)完整安裝了 Compaq Visual Fortran 6.6(設(shè)置了系統(tǒng)路徑),python目錄下的f2py.py可以自動搜索可用的 fcompiler 。經(jīng)測試不提供 --fcompiler 參數(shù)也行。
- 如果系統(tǒng)完整安裝了Microsoft Visual Studio 2008 等其他開發(fā)環(huán)境(包括Express版本),那么c compiler的路徑也是可以自動識別的。經(jīng)測試不提供 --compiler 參數(shù)也行。直接運行
python f2py.py -c Foo.F -m foo
就可以將Foo.F 封裝成 foo.pyd 庫,通過import foo來調(diào)用。 - 如果嫌棄Visual Studio 太臃腫,系統(tǒng)安裝了 Microsoft Visual C++ Compiler for Python 2.7,想用這個做c compiler,那么就有一個小坑,運行 f2py.py 進行封裝時,可能會提示
error: Unable to find vcvarsall.bat
,然而系統(tǒng)中 大概在C:\Program Files\Common Files\Microsoft\Visual C++ for Python\9.0
目錄已經(jīng)存在了 vcvarsall.bat,即便配置了path變量也依然找不到。原因是msvc9compiler.py 并不從環(huán)境變量指定的路徑中尋找’vcvarsall.bat’,而是通過注冊表來尋找…,然而,不知為什么編譯器安裝過程沒有配置注冊表,解決辦法參考這里
此外,f2py也支持 Intel 和IBM 的fortran編譯器,可以說是很成熟了。