Компилятор C не найден в интерфейсе Dymola Python

Я написал скрипт на Python, который запускает файл скриптов Modelica для непрерывной интеграции с конвейером Gitlab. Я мог бы заставить скрипт python работать из командной строки без каких-либо проблем, однако всякий раз, когда я запускаю конвейер в Gitlab, я получаю ошибки ниже, мне любопытно, сталкивался ли кто-нибудь с подобными проблемами и мог ли предоставить решение, возможно?

Компилятор не выбран. Выберите версию Visual C ++ или GCC. Инструкции по установке поддерживаемого компилятора см. На сайте www.dymola.com/compiler.

Я пытался использовать метод SetDymolaCompiler, но он по-прежнему дает ту же ошибку. (Кстати, документация в интерфейсе python была неверной. В документации списки строк (см. Ответ Марко и мои исправления) использовались для установки местоположения компилятора, однако я решил, что на самом деле это должна быть карта).

Вот код, который я запускал:

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
  • ОС: 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"]);

person Hang Yu    schedule 26.02.2018    source источник
comment
Что касается документации по интерфейсу python: только разделы с заголовком «Пример Python» относятся к python. В других примерах показано, как команды могут выполняться внутри Dymola с использованием кода Modelica. Часто примеры Modelica также можно использовать в интерфейсе python, но не всегда (как в вашем случае).   -  person marco    schedule 28.02.2018


Ответы (1)


Я не пробовал использовать 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 во время разработки с помощью DymolaInterface(showwindow=True)

  • устанавливать точки останова и проверять после каждой команды, что Димола пишет в командное окно. В вашем случае стало очевидно, что SetDymolaCompiler не был выполнен из-за синтаксических ошибок и компилятор не был установлен

И, наконец, ваш минимальный пример не работает, поскольку строки кода Python не должны заканчиваться на;

person marco    schedule 27.02.2018
comment
Спасибо за предложение, попробую. Допускаю add_semi_colon = глупо; ой - person Hang Yu; 27.02.2018