Ubuntu下Anaconda安装的Gurobi求解Pyomo模型缺失.sol文件报错求助
问题排查与解决方法
原因1:Pyomo求解器调用链路配置错误
当前报错栈显示Pyomo走了ASL(AMPL Solver Library)的调用链路,而非Gurobi原生接口,ASL链路依赖临时文件传递求解结果,容易出现读写异常,Windows上默认调用原生接口所以无此问题。
解决办法:
- 显式指定Pyomo调用Gurobi原生接口,修改求解器初始化代码:
solver = SolverFactory('gurobi_direct')
- 如果你使用solver_manager,确认调用的求解器标识为
gurobi_direct,而非gurobi或者asl:gurobi。
原因2:临时文件被系统自动清理
Ubuntu默认/tmp目录为内存挂载的tmpfs,会定期清理长时间未访问的文件,你的模型运行数分钟才结束,求解过程中生成的临时结果文件可能被系统提前删除。
解决办法:
- 手动指定Pyomo的临时文件存储路径到个人用户目录,避免被系统清理,在代码开头添加:
import pyomo.common.tempfiles pyomo.common.tempfiles.tempfile_manager.tempdir = '/home/urafiee/pyomo_tmp'
提前创建目录并赋予读写权限:
mkdir -p /home/urafiee/pyomo_tmp chmod 777 /home/urafiee/pyomo_tmp
原因3:Gurobi系统依赖缺失
Anaconda安装的Gurobi可能缺少Ubuntu下的动态依赖库,导致求解器运行中途崩溃退出,未生成结果文件。
解决办法:
- 先单独测试Gurobi是否正常运行,终端执行:
gurobi.sh
如果无法正常进入交互界面,安装对应系统依赖:
sudo apt update sudo apt install -y libgomp1 libgl1-mesa-glx
原因4:版本兼容性问题
Windows上的Pyomo、Gurobi版本组合适配正常,Ubuntu上的版本组合可能存在兼容冲突。
解决办法:
- 核对Ubuntu上的版本和Windows环境保持一致:
conda list | grep pyomo conda list | grep gurobi
如果版本不一致,用conda统一安装匹配版本即可。
内容的提问来源于stack exchange,提问作者AliRa
相关产品推荐
相关产品推荐

