我在 python 脚本中使用 fortran 程序,并尝试使用setup.py
脚本构建和安装它,使用numpy.distutils
. 但是,我不擅长知道如何链接各种代码文件,所以我想我会在这里问这个问题,希望有人能清楚地解释如何处理每种类型的文件。
让我解释一个假设的情况,它恰好与我自己的情况非常相似。我有两个包含一个模块的文件,每个文件都希望成为.so
可在 python 中导入的文件。假设它们是read.f90
(包含模块read
)和analyse.f90
(包含模块analyse
)这两个模块都使用在另一个文件中定义的子例程,subs.f90
我不断添加和更新。该模块analyse
还依赖于produce
文件中的另一个模块produce.f90
,我可能会在开始时对其进行调整,但基本上我很可能会让它在此之后。此外,analyse
还依赖于外部库libfoo.a
。
完成这项工作有两层 - 首先,f90 文件中的use
andinclude
语句必须正确。其次,setup.py
文件中的 Extension 配置必须正确。到目前为止,我知道如何让外部库工作 - 在模块analyse
中 putuse foo
和 setup.py 中的 Extension 函数中,使用关键字
library_dirs = ["path/to/library"],
libraries = ["foo"],
include_dirs = ["path/to/directory/with/mod/files"]
但是,对于其余部分,我不确定。我有一些工作,但它似乎不是最佳方式。其他部分根本不工作。我只是想知道是否有人可以清楚地解释该怎么做?