如何在MacBook的VSCode环境下通过Python执行GAMS文件?
问题
在MacBook的VSCode环境下,尝试通过Python文件运行GAMS文件。目前已能用subprocess模块打开目标GAMS文件,但仅打开不执行,代码如下:
import subprocess subprocess.run(['open', "/Users/tk/GAMS/sim.gms"], check=True)
需求是实现执行GAMS文件,且GAMS执行完成后Python程序能继续运行,同时觉得GAMS官方教程过于复杂没理解。
解决方案
你之前用open命令只是调用系统默认程序打开GAMS文件,并没有触发模型执行。要真正运行GAMS模型,需要直接调用GAMS的命令行执行器,而非打开文件本身。
步骤1:确认GAMS命令行工具路径
在Mac上,GAMS命令行工具的默认安装路径类似/Applications/GAMS/<版本号>/gams(比如/Applications/GAMS/45.1/gams)。你可以先在终端输入gams测试,如果能直接运行,说明路径已加入系统环境变量;如果不行,就需要使用完整路径调用。
步骤2:修改Python代码
用subprocess直接调用GAMS命令行工具,传入你的GAMS文件路径作为参数。subprocess.run()默认会等待GAMS执行完成后,才继续运行后续Python代码:
import subprocess # 替换为你的GAMS执行器路径和GAMS文件路径 gams_exec_path = "/Applications/GAMS/45.1/gams" target_gms_file = "/Users/tk/GAMS/sim.gms" # 执行GAMS模型,check=True会在GAMS执行出错时抛出异常 subprocess.run([gams_exec_path, target_gms_file], check=True) # GAMS执行完成后,以下代码会继续运行 print("GAMS模型执行完毕,Python程序继续执行后续逻辑")
补充说明
- 若
gams已在系统环境变量中,可以直接用["gams", target_gms_file]作为参数,无需写完整路径。 - 如果需要捕获GAMS的输出日志,可以添加
stdout=subprocess.PIPE和stderr=subprocess.PIPE参数,后续通过返回对象的stdout和stderr属性查看输出内容。
内容的提问来源于stack exchange,提问作者Krypt
相关产品推荐
相关产品推荐

