我试图通过编写以下命令来使用f2py包装FORTRAN90代码
gfortran -c nrt.f90
gfortran -c lu.f90
gfortran -c sqn.f90
gfortran -c csm.f90 -llapack -lblas
gfortran -c pa.f90
f2py -c nrt.f90 lu.f90 sqn.f90 csm.f90 pa.f90 -m p_avg
我在csm.f90中调用LAPACK函数zhegv()。一切都在编译,但是当我从终端调用ipython时
ipython --pylab
然后在ipython类型
from p_avg import pa
我看到了
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-1-8181d9e1b27d> in <module>()
----> 1 from p_avg import pa
ImportError: ./p_avg.so: undefined symbol: zhegv_
我还需要做些什么来确保f2py可以理解这个LAPACK函数调用吗?我看到其他人已经询问过如何直接使用f2py和LAPACK模块,但是我在这里使用另一段FORTRAN代码中的LAPACK函数。
谢谢。
更新: 当我通过在终端输入以下内容来尝试评论中建议的命令时,
f2py -L/usr/lib/lapack -llapack -c nrt.f90 lu.f90 sqn.f90 csm.f90 pa.f90 -m p_avg
或
f2py -L/usr/lib/ -llapack -c nrt.f90 lu.f90 sqn.f90 csm.f90 pa.f90 -m p_avg
然后在ipython中键入以下内容,
from p_avg import pa
我得到了
---------------------------------------------------------------- -----------
ImportError Traceback (most recent call last)
<ipython-input-1-8181d9e1b27d> in <module>()
----> 1 from p_avg import pa
ImportError: No module named p_avg
答案 0 :(得分:1)
在这种情况下,你确实可以写
f2py -L/usr/lib/ -llapack -c nrt.f90 lu.f90 sqn.f90 csm.f90 pa.f90 -m p_avg
但您需要确保已安装lapack开发库。当我只安装了liblapack3时,上面的命令不起作用。