【问题标题】:Fortran Extensions in >=Python 3.5>=Python 3.5 中的 Fortran 扩展
【发布时间】:2017-12-28 10:00:59
【问题描述】:

我正在尝试构建包含适用于 Python 3.5 和更高版本的 f90 代码的 Python 扩展。以前,我能够使用 MinGWPy 项目使用 gfortran 构建扩展。但是,MinGWPy 不支持 Python 3.5 及更高版本,最近已停产。

如何为包含 Fortran 的 3.5 版及更高版本构建 Python 扩展? 特别要记住使用的构建系统:numpy.distutils 以及它如何将 Fortran 库直接静态链接到使用默认 C 编译器编译的包装器。

【问题讨论】:

  • “据我所知,不再可能编译 fortran 扩展......” 你为什么这么认为?你遇到过什么样的问题? C 编译器究竟在哪些方面与 gfortran 不兼容?我在使用 Fortran_C 互操作(又名 iso c 绑定)的 Microsoft C++ 代码中使用 gfortran 代码就好了。
  • 所以更多的是关于 gcc 而不是 gfortran。它是关于 C 包装层的。在这种情况下,您不能只定义链接中第一条评论中提到的宏吗?请务必在问题中包含您拥有的所有重要信息,如果没有该链接,问题将非常不清楚。
  • mingwpy.github.io/proposal_december2015.html 这个链接比较清楚一点。我问的正是我想要回答的问题。如果有一个复杂的方法需要对我的代码进行大量修改,那么它不是我可以使用的解决方案。
  • “我问的正是我想要回答的问题。” 请理解,如果问题需要在 cmets 中进行澄清,它可能不完整或缺乏激励信息这通常非常重要。评论可以随时删除,这就是为什么它应该在问题中,而不是在 cmets 中。

标签: python-3.x fortran f2py


【解决方案1】:

您可以使用 flang 为 3.5+ 构建 Python 扩展。那是:

conda config --add channels conda-forge
conda install flang

披露:我是 flang 项目的贡献者。

【讨论】:

  • 这看起来很有趣。 flang 是否适用于“开箱即用”的 f2py?
  • flang 需要 numpy 1.14
  • 有效!!非常感谢@xaav。您是否建议保留 mingwpy C 编译器或安装 Microsoft 工具?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-08
  • 2018-05-04
  • 2015-12-23
  • 1970-01-01
  • 2011-10-17
  • 1970-01-01
相关资源
最近更新 更多