【问题标题】:Tell f2py to skip a function告诉 f2py 跳过一个函数
【发布时间】:2019-07-03 08:03:13
【问题描述】:

我正在使用 f2py 编译一个 Fortran 库,这样我就可以将它导入 python 中,这样我就可以轻松地创建单元测试。但是,模块中的一个函数使用可分配数组从文件中读取矩阵(直到读取矩阵的大小才知道)。不幸的是,f2py 不支持可分配数组,因此编译失败。

我可以使用模块中的注释告诉 f2py 只忽略有问题的函数吗?

我知道skip 可以在编译时指定函数列表,但我希望有一个可以在源文件中实现的解决方案,例如修改参数处理方式的!f2py cmets通过 f2py。

【问题讨论】:

  • 要执行部分包装,您可以使用.pyf 文件。过程如下: 使用-m module_name -h module_file.f90 生成默认的.pyf 文件。编辑 .pyf 文件以仅保留您想要向 Python 公开的内容。使用f2py -c 编译Fortran 代码和接口。通过列出.pyf.f90 文件,该进程应该正确地使用包装器。我在一个小样本上成功测试。让我知道它是否有效,以便我发布正确的答案。

标签: python unit-testing fortran f2py


【解决方案1】:

在 f2py 文档 here 中,它说您可以通过这样做来跳过一个函数:

  f2py -h <filename.pyf> <options> <fortran files>   \
      [[ only: <fortran functions>  : ]                \
       [ skip: <fortran functions>  : ]]...            \
      [<fortran files> ...]

其中skip:"" 可用于跳过您不想执行的任何功能。

【讨论】:

  • 我看到了,但我希望有一个可以在源文件中实现的解决方案,比如修改 f2py 如何处理参数的!f2py cmets,这样我就不会需要在编译模块时执行它
  • 哦,我明白你的意思了,你可能想编辑你的问题来指定这个。我会更多地研究它并给出结果。
  • 这个答案可能是最好的选择。当我想得更多时,通过在 Fortran 文件中指定应该跳过一个函数而不是在我调用 f2py 的 Makefile 中指定一个函数并没有什么好处。
猜你喜欢
  • 2020-09-12
  • 2015-11-16
  • 1970-01-01
  • 2014-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多