You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过源码注释让f2py跳过存在问题的Fortran函数?

在Fortran源码中通过f2py注释忽略特定函数

当然可以!f2py支持在Fortran源码里直接添加特殊注释,让它自动跳过你指定的问题函数,完美匹配你不想在编译时手动指定跳过列表的需求。

具体操作方法

找到那个使用allocatable数组的问题函数,在它的定义上方添加一行以!f2py开头的注释,格式如下:

!f2py skip: 你的函数名

示例代码

假设你的Fortran模块是这样的:

module matrix_ops
  implicit none

contains

  ! 这个函数用了allocatable数组,f2py无法处理,需要跳过
  !f2py skip: read_matrix_from_file
  subroutine read_matrix_from_file(filename, mat)
    character(len=*), intent(in) :: filename
    real, allocatable, intent(out) :: mat(:,:)
    ! 这里是读取文件、动态分配数组的逻辑代码
  end subroutine read_matrix_from_file

  ! 这个函数正常,会被f2py包装到Python模块中
  subroutine multiply_matrices(a, b, result)
    real, intent(in) :: a(:,:), b(:,:)
    real, intent(out) :: result(:,:)
    result = matmul(a, b)
  end subroutine multiply_matrices

end module matrix_ops

关键注意事项

  • 注释必须严格以!f2py开头,后面紧跟skip:和你要忽略的函数名,函数名要和源码中的定义完全一致(Fortran本身大小写不敏感,但f2py识别时建议保持大小写匹配)
  • 这行注释要放在目标函数的直接上方,确保f2py在解析时能关联到对应的函数
  • 如果有多个需要跳过的函数,给每个函数单独添加一行!f2py skip: 函数名注释即可

用这种方式修改源码后,再用f2py编译时,指定的问题函数会被自动排除,不会参与包装过程,你就能顺利编译其他可用函数并在Python中导入测试了。

内容的提问来源于stack exchange,提问作者Paul Wintz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 09:24:30