如何通过源码注释让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
相关产品推荐
相关产品推荐

