Python 中的 Fortran 子例程导入失败



我正在尝试将一个 fortran 子例程导入 python 代码。按照本指南 https://notmatthancock.github.io/2017/02/10/calling-fortran-from-python.html 我将以下行添加到我的 fortran 代码中:

!f2py intent(in) :: ear,ne,parames,ifl
!f2py intent(out) photar,photer

但是,当我尝试使用 f2py -c fireball_ES_param.f -m fireball 创建要导入我的 python 代码 fireball.so 时,我收到了数百个警告,这可能是问题所在,但我不确定:https://www.4shared.com/s/f2ynHZ_Wjda(太长了,无法在此处发布(。

无论如何,fireball.cpython-34m.so文件都会被创建,但是当我尝试从python导入它时,我得到:

$ python
Python 2.7.6 (default, Nov 13 2018, 12:45:42)  [GCC 4.8.4] on
linux2 Type "help", "copyright", "credits" or "license" for more
information.
>>> import fireball Traceback (most recent call last):
File "<stdin>", line 1, in <module> ImportError:
  No module named fireball

我试过了:

import sys
sys.path.append('/path/to/folder/containing/fireball.cpython-34m.so')

但得到了相同的结果。我不确定fireball.so的创建是否存在问题,还是其import .

f2py 链接到 Python 3.4(因此 fireball.cpython-34m.so 中的 34 个(,但 python3 实际上是 3.6 版本(请参阅您的最后一条评论(。

您的选择:

  • 从Python 3.4开始你的程序,它应该以python3.4的形式提供
  • 将 f2py 更新到 Python 3.6。如果你通过pip安装,pip install --user -U numpy应该可以。然后重新生成扩展。

最新更新