我正在尝试将一个 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
应该可以。然后重新生成扩展。