【发布时间】:2021-09-08 19:12:12
【问题描述】:
我正在尝试使用 F2py,但在涉及“已弃用的 numpy”的编译时收到了一些错误消息或警告。我不确定如何解决这个问题。我正在使用 python 2.7.17 和 fortran90。
我通过写作编译
f2py -c f2py_F90.f90 -m fortran
注意,编译时使用:
f2py -c f2py_F90.f90 -m fortran \
也不能解决问题。
以下是指示我遇到的问题的基本 fortran 和 python 代码。这个例子是最小的、完整的和可验证的。如何解决此问题并成功让 python 执行我传递给它的 fortran 模块?
我收到的信息是
警告“使用已弃用的 NumPy API”
预期的输出应该是 a = [2,1,3] 但我收到了上述警告。
!fortran code
module fmodule
implicit none
contains
subroutine fast_reverse(a,n)
integer, intent(in) :: n
real, intent(inout) :: a(:)
a(1:n) = a(n:1:-1)
end subroutine fast_reverse
end module fmodule
#python code
import fortran
import numpy as np
a = np.array([1,2,3],np.float32)
fortran.fmodule.fast_reverse(a,2)
a #the output should give a = [2,1,3]
【问题讨论】:
-
如果你是
getting some error messages or warnings,你需要把它们放在这里。 -
@RandomDavis 我明确添加了从终端获得的错误消息,谢谢。我也已经在原始帖子中说明了此错误消息。请阅读。
-
测试一些东西:使用
python -m numpy.f2py -c fmodule.f90 -m fortran构建,这样您就知道两个命令使用了相同的python 解释器。诊断:which -a python和which -a f2py。另外,有什么理由使用 Python 2? -
您好 Jeff,这些命令旨在查看您是否安装了多个 Python 或某些软件包,可能存在冲突。您是否有可能使用 pip 安装软件包?
-
@JeffFaraci 我同意我的建议不会修复您的设置。如果您的设置在
f2py演示(我在我的机器上验证过)上不起作用,感觉就像您遇到了设置问题。如果您没有完成安装,您可以尝试在虚拟机中运行演示吗?一旦你有了一个你知道可以工作的设置,它将使你的代码调试变得更加容易。