使用 f2py 编译的 Fortran 库之后是否依赖于 numpy?

Does compiled Fortran library using f2py depend on numpy afterwards?

我有一个 Fortran 95 代码,我想使用 f2py 将其编译为 Python 库。事实上,我已经做到了,而且效果很好。编译后生成的 .pyd (.so) 是否依赖于 numpy?它可以在没有安装 numpy 的情况下使用吗?它们是否有其他选项可以将所需的部分嵌入最终库中,因此它没有依赖关系?

我认为这是一个伴随商业产品的库,我希望最终用户在他的系统上安装尽可能少,所以建议我未来的客户安装 numpy 不适合我。我广泛搜索了答案,但似乎找不到。

如果不可能,能否请您向我介绍一种使用 Python.

包装 Fortran 代码的无依赖性方法

恐怕没有 numpy 就无法做到这一点,因为 f2py 在内部会产生 numpy 依赖项。 您的代码需要是 FORTRAN 语言吗?如果它可以是 C/C++,则可能有机会绕过依赖关系,请查看 this book 的第 7 章以获得更多见解。

在网站 fortran90.org 上,有专门介绍 Fortran C 界面的部分。虽然当然可以使用 NumPy,但使用 iso_c_binding 的纯 C 接口当然是可能的。而且它是标准的一部分!

请参阅 Interfacing with C 和以下部分。 link 指的是从 Fortran 调用 C,但仍然直接相关。下一节使用 Cython 从 Python "à la C" 调用 Fortran,但使用 NumPy。使用ctypes的部分没有使用NumPy。

注意:您需要 Fortran 2003 编译器。 Fortran 95 代码当然是合法的 Fortran 2003,因此您只需将 wrapper/interface 部分添加到您的代码中即可。