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

Numpy 2.0.1中f2py无法暴露Fortran变量,如何在Python中访问?

在NumPy 2.0中访问F2py编译的Fortran纯变量模块的方法

方法1:给纯变量模块添加空子程序

NumPy 2.0的f2py默认不会导出仅包含变量声明的模块,这类模块被判定为“无代码实体”。你可以给GEOPLOT_GLOBALS模块添加一个空子程序,让f2py识别并导出该模块:

module GEOPLOT_GLOBALS
    implicit none
    integer, parameter :: n_max = 100
    ! 添加空子程序触发f2py导出模块
    contains
        subroutine dummy()
            return
        end subroutine dummy
end module GEOPLOT_GLOBALS

重新用f2py编译后,就能像之前一样通过geo.geoplot_globals.n_max访问变量。

方法2:编译时显式指定导出模块

如果不想修改Fortran源码,可在f2py编译命令中强制指定要导出的GEOPLOT_GLOBALS模块,示例命令如下:

f2py -c -m geo.geoplot 你的源码文件名.f95 --export GEOPLOT_GLOBALS

替换命令中的你的源码文件名.f95为实际Fortran源码路径,编译完成后模块会被正常导出,可直接访问其中的变量。

方法3:通过f2py内部接口临时访问(不推荐长期使用)

如果暂时无法重新编译,可尝试通过模块的__f2py__内部属性获取全局变量。先查看可用的全局变量列表:

import geo.geoplot as geo
print(geo.__f2py__.get_global_vars())

然后通过以下方式直接读取变量:

n_max = geo.__f2py__.get_global('n_max')

该方法依赖f2py的内部实现,后续版本可能变动,优先推荐前两种方法。


内容的提问来源于stack exchange,提问作者Peter Kämpf

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 20:36:01