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

安装pyOpt时Mingw64 gfortran报参数秩不匹配错误如何解决

解决pyOpt编译时gfortran秩不匹配报错方案

错误原因

高版本(10+)gfortran默认开启实参秩严格校验,pyOpt依赖的ALGENCAN求解器为早期Fortran77代码,存在标量/数组实参混用的不规范写法,低版本编译器仅触发警告,高版本直接判定为编译错误。

解决方案

方案1:添加编译参数跳过校验(最快生效)

给gfortran添加-fallow-argument-mismatch编译参数,允许实参不匹配的写法:

  • Windows Mingw64环境下,编译前先在终端执行命令设置环境变量:
    set FFLAGS=-fallow-argument-mismatch
    
  • 手动修改编译配置的场景,直接在setup.py或者Makefile的Fortran编译参数(FFLAGS)中添加该参数即可。

方案2:修改源码彻底修复

找到报错文件pyOpt/pyALGENCAN/source/evalal.f:
定位到802行调用sevalgjacp时传入的dum变量的声明位置,将原来的标量声明修改为和对应形参匹配的一维数组声明,例如将real dum改为real dum(*),即可匹配另一调用处传入的数组g/gp的秩要求。

方案3:降级编译器

将Mingw64的gfortran版本降级到9.x及更低版本,低版本gfortran默认不开启该严格校验,不会将该问题判定为错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 10:06:01