Windows下f2py编译Fortran模块报错:无法找到fmodule.mod文件
解决Windows下f2py编译Fortran模块时找不到
.mod文件的问题 核心问题分析
你遇到的Cannot open module file 'fmodule.mod'错误,本质是f2py编译时无法找到依赖的Fortran模块定义文件(.mod),常见原因包括依赖模块未被正确编译、编译顺序错误,或者路径参数配置不当。结合你的环境(Python 3.11.7、NumPy 1.26.2、GNU Fortran 13.2.0、Windows 10),以下是针对性的解决步骤:
解决方案步骤
1. 确认依赖模块的存在与编译顺序
如果你的module.f90中使用了use fmodule语句,说明代码依赖名为fmodule的模块:
- 若
fmodule是单独的文件(fmodule.f90),编译时必须将两个文件都传入命令,保证f2py能处理依赖:python -m numpy.f2py -c -m module fmodule.f90 module.f90 - 若
fmodule和主模块写在同一个module.f90文件中,先手动用gfortran预编译生成.mod文件,再让f2py读取:# 先生成.mod文件 gfortran -c module.f90 # 再用f2py编译,指定.mod所在目录(当前目录用-I./) python -m numpy.f2py -c -m module -I./ module.f90
2. 检查模块名与文件名的一致性
GNU Fortran对模块名大小写不敏感,但f2py可能因名称匹配问题找不到文件:
- 确保Fortran代码中
module fmodule的名称,和对应的文件名(如fmodule.f90)保持一致,避免拼写或大小写差异。
3. 修正build-dir路径配置
指定build-dir时,需确保目录存在且权限足够,同时显式指定.mod文件的搜索路径:
# 先创建build目录(如果不存在) mkdir build # 预编译生成.mod文件到build目录 gfortran -c module.f90 -o build/module.o # 用f2py编译时指定build-dir和include路径 python -m numpy.f2py -c -m module --build-dir ./build -I./build module.f90
4. 验证GNU Fortran环境配置
确保gfortran已加入系统PATH:
在CMD/PowerShell中执行gfortran --version,若能正常输出版本信息,说明环境配置正确;若报错,需将gfortran的安装路径(如mingw64/bin)添加到系统环境变量PATH中。
内容的提问来源于stack exchange,提问作者Tanus Szabo
相关产品推荐
相关产品推荐

