我正在尝试通过 f2py 在 Python 3.10 中使用 Fortran 95 函数。 我编译如下:
python -m numpy.f2py -c -m isprim f2p.f95
我的 F95 代码:
function isprima (p)
integer, intent(in) :: p
integer :: i
logical :: isprima
isprima = .true.
if (p/=2) then
testloop: do i=2,int(floor(sqrt(real(p))))
if (modulo(p, i) == 0) then
isprima = .false.
exit testloop
end if
end do testloop
end if
end function isprima
我的Python代码:
import numpy as np
import isprim
print(isprim.isprima(5))
错误信息是:
发生异常:AttributeError 模块“isprim”没有 属性“isprima”文件 “C:\ Users \ josch \ Documents \ Programmierung \ Fortran95 ortran2python.py”, 第 3 行,在 print(isprim.isprima(5)) AttributeError: 模块“isprim”没有属性“isprima”
我不知道出了什么问题。
当我尝试自己解决这个问题时,我在网上找到了解决方案,例如将F95-Function命名为小写。显然,这不起作用。我找不到其他解决方案。
如果您尝试使用
进行构建f2py -c f2p.f95 -m isprim
或
python -m numpy.f2py -c f2p.f95 -m isprim
在Linux上,它将生成一个.so文件。 python 程序运行时将获取该值。包含 numpy 并不是绝对必要的 - 它只会使执行时间更长一些,因为必须加载 numpy
import isprim
print(isprim.isprima(5))
print(isprim.isprima(6))
结果是
1
0