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

原正常运行的NumPy.f2py在新版Intel oneAPI Fortran下报错

解决Windows 11下Intel oneAPI Fortran配合f2py生成PYD的AttributeError问题

问题根源

AttributeError: 'NoneType' object has no attribute 'group' 是因为numpy.f2py的正则表达式无法适配Intel oneAPI Fortran编译器的输出格式,匹配结果为空时调用group()方法触发错误——oneAPI编译器的输出格式和旧版Intel Fortran存在细微差异,导致解析失败。

修复方案

1. 优先升级numpy

numpy后续版本已修复对oneAPI编译器的兼容问题,执行升级命令:

pip install --upgrade numpy

2. 显式指定编译器

若升级后仍报错,在f2py命令中明确指定Intel oneAPI编译器:

Python -m numpy.f2py -c --fcompiler=intelem test3.f -m test3

或者直接指定编译器路径(替换为你的实际安装路径):

Python -m numpy.f2py -c --fcompiler=intelem --f90-exec="C:\Program Files (x86)\Intel\oneAPI\compiler\latest\windows\bin\intel64\ifort.exe" test3.f -m test3

3. 手动调整f2py的正则表达式(临时 workaround)

如果上述方法无效,修改numpy中解析编译器输出的代码:

  • 找到numpy安装目录下的numpy/f2py/f90mod_rules.py文件
  • 定位到解析错误输出的正则表达式行,将旧格式(适配旧版Intel Fortran):
    regex = re.compile(r'^.*?(\d+)\s+(\d+)\s+(Error|Warning)')
    
    修改为适配oneAPI输出的格式:
    regex = re.compile(r'^.*?(\d+):(\d+)\s+(Error|Warning)')
    
    (oneAPI的错误输出通常为文件名:行号:列号 Error/Warning,旧版则是行号 列号 Error/Warning)

4. 验证测试

用fib1.f示例代码重新执行命令:

Python -m numpy.f2py -c fib1.f -m fib1

若成功生成fib1.pyd文件,说明问题已解决。

内容的提问来源于stack exchange,提问作者Ian King

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 09:12:56