【发布时间】:2021-08-27 18:47:38
【问题描述】:
是否可以使用 setup.py 文件编译 python 包,该文件使用 https://www.fortran90.org/src/best-practices.html#interfacing-with-c 中描述的工作流程的 fortran 代码?
简而言之,这里描述的工作流程是:
- 创建一个为 fortran 子例程定义 c_iso_bindings 的 fortran 包装函数
- 创建一个 cython .pyx 函数,该函数使用步骤 #1 中生成的 c 代码创建一个函数
是否可以在一个 setup.py 文件中编译这两个步骤的代码? numpy distutils 包似乎最适合编译 fortran 源代码,而 cython 使用自己的 distutils 包编译。
this question 中的解决方案在 setup.py 文件中添加了显式的 fortran 编译器调用,并使用 cython distutils 包。这似乎有点乱,并且介绍了使用不同编译器生成代码的可能性。
【问题讨论】:
-
不幸的是,我认为不可能以可移植的方式进行,但如果它仅适用于 linux 或 mac,您可以通过添加指向预编译的 fortran 二进制文件的自定义链接参数来实现(
-L/path/to/file -lyour_lib -Wl,-rpath=/path/to/file) 用于 C 扩展。 fortran 代码仍然需要通过 numpy 单独编译。
标签: python numpy fortran cython