在 Dymola Python 接口中找不到 C 编译器
C compiler not found in Dymola Python interface
我写了一个 python 脚本,它运行一些用于 Gitlab 管道持续集成的 Modelica 脚本文件。我可以让 python 脚本从命令行运行而没有任何问题,但是,每当我在 Gitlab 中触发管道时,我都会在下面收到错误,我很好奇是否有人遇到过类似的问题并可能提供解决方案?
No compiler selected. Please select a version of Visual C++ or GCC. For instructions on how to install a supported compiler, please visit www.dymola.com/compiler.
我尝试使用SetDymolaCompiler
方法,但它仍然给我同样的错误。
(顺便说一句,python 界面中的文档不正确。在文档中,字符串列表(参见 marco 的回答和我的更正)用于设置编译器位置,但是,我认为它实际上应该是一个地图)。
这是我的代码 运行:
dymola_obj = None
try:
dym_obj = DymolaInterface(dymola_exe)
dym_obj.cd(mc_work_dir)
dym_obj.SetDymolaCompiler("vs", {"CCompiler":"MSVC","MSVCDir":"C:/Program Files (x86)/Microsoft Visual Studio 11.0/Vc"})
success = dym_obj.ExecuteCommand("some command")
except DymolaException as ex:
success = False
finally:
if dym_obj is not None:
dym_obj.close()
dym_obj = None
return success
- OS:Win 10 Pro(在虚拟机上)
- 迪莫拉:2018 FD01
更正:
Python 接口文档仍然不正确,为了更改编译器设置,应该使用 [] 而不是 { }。
Python接口文档:
SetDymolaCompiler("vs", {"CCompiler=MSVC","MSVCDir=C:/Program Files (x86)/Microsoft Visual Studio 10.0/Vc"});
应改为:
SetDymolaCompiler("vs", ["CCompiler=MSVC","MSVCDir=C:/Program Files (x86)/Microsoft Visual Studio 10.0/Vc"]);
我没有尝试使用 gitlab,但是当 运行 你的代码在我的机器上使用 Dymola 2018 FD01 和 python 2.7 时我发现了一个错误。
事实上,SetDymolaCompiler 确实需要一个字符串列表。您必须更换行
dym_obj.SetDymolaCompiler("vs", {"CCompiler":"MSVC","MSVCDir":"C:/Program Files (x86)/Microsoft Visual Studio 11.0/Vc"});
和
dym_obj.SetDymolaCompiler('vs', ['CCompiler=MSVC', 'MSVCDir="C:/Program Files (x86)/Microsoft Visual Studio 11.0/Vc'])
使用 python 界面时的一些提示:
在开发期间激活 Dymola window
DymolaInterface(showwindow=True)
设置断点并在每个命令后检查 Dymola 写入命令的内容 window。在您的情况下,很明显 SetDymolaCompiler
由于语法错误而未执行,并且未设置编译器
最后,您的最小示例不起作用,因为 python 代码行不得以 ;
结尾
我写了一个 python 脚本,它运行一些用于 Gitlab 管道持续集成的 Modelica 脚本文件。我可以让 python 脚本从命令行运行而没有任何问题,但是,每当我在 Gitlab 中触发管道时,我都会在下面收到错误,我很好奇是否有人遇到过类似的问题并可能提供解决方案?
No compiler selected. Please select a version of Visual C++ or GCC. For instructions on how to install a supported compiler, please visit www.dymola.com/compiler.
我尝试使用SetDymolaCompiler
方法,但它仍然给我同样的错误。
(顺便说一句,python 界面中的文档不正确。在文档中,字符串列表(参见 marco 的回答和我的更正)用于设置编译器位置,但是,我认为它实际上应该是一个地图)。
这是我的代码 运行:
dymola_obj = None
try:
dym_obj = DymolaInterface(dymola_exe)
dym_obj.cd(mc_work_dir)
dym_obj.SetDymolaCompiler("vs", {"CCompiler":"MSVC","MSVCDir":"C:/Program Files (x86)/Microsoft Visual Studio 11.0/Vc"})
success = dym_obj.ExecuteCommand("some command")
except DymolaException as ex:
success = False
finally:
if dym_obj is not None:
dym_obj.close()
dym_obj = None
return success
- OS:Win 10 Pro(在虚拟机上)
- 迪莫拉:2018 FD01
更正:
Python 接口文档仍然不正确,为了更改编译器设置,应该使用 [] 而不是 { }。
Python接口文档:
SetDymolaCompiler("vs", {"CCompiler=MSVC","MSVCDir=C:/Program Files (x86)/Microsoft Visual Studio 10.0/Vc"});
应改为:
SetDymolaCompiler("vs", ["CCompiler=MSVC","MSVCDir=C:/Program Files (x86)/Microsoft Visual Studio 10.0/Vc"]);
我没有尝试使用 gitlab,但是当 运行 你的代码在我的机器上使用 Dymola 2018 FD01 和 python 2.7 时我发现了一个错误。
事实上,SetDymolaCompiler 确实需要一个字符串列表。您必须更换行
dym_obj.SetDymolaCompiler("vs", {"CCompiler":"MSVC","MSVCDir":"C:/Program Files (x86)/Microsoft Visual Studio 11.0/Vc"});
和
dym_obj.SetDymolaCompiler('vs', ['CCompiler=MSVC', 'MSVCDir="C:/Program Files (x86)/Microsoft Visual Studio 11.0/Vc'])
使用 python 界面时的一些提示:
在开发期间激活 Dymola window
DymolaInterface(showwindow=True)
设置断点并在每个命令后检查 Dymola 写入命令的内容 window。在您的情况下,很明显
SetDymolaCompiler
由于语法错误而未执行,并且未设置编译器
最后,您的最小示例不起作用,因为 python 代码行不得以 ;
结尾