Запустить процесс сборки catkin изнутри python - PullRequest
0 голосов
/ 06 января 2020

Я работаю над сценарием python, чтобы организовать проект, состоящий из нескольких репозиториев. Некоторые цели строятся с использованием catkin. Поскольку catkin - это инструмент python, я подозреваю, что должен быть способ вызвать эквивалент catkin build из скрипта python. Тем не менее, я борюсь за это. Самое близкое, что я дошел до этого:

from catkin_tools.commands import catkin
catkin.main(["build"])

Однако мне это не кажется правильным, кроме того факта, что по окончании процесса сборки я получаю:

Exception ignored in: <bound method BaseEventLoop.__del__ of <_UnixSelectorEventLoop running=False closed=True debug=False>>
Traceback (most recent call last):
  File "/home/user/.local/lib/python3.6/site-packages/trollius/base_events.py", line 395, in __del__
  File "/home/user/.local/lib/python3.6/site-packages/trollius/unix_events.py", line 65, in close
  File "/home/user/.local/lib/python3.6/site-packages/trollius/unix_events.py", line 166, in remove_signal_handler
  File "/usr/lib/python3.6/signal.py", line 47, in signal
TypeError: signal handler must be signal.SIG_IGN, signal.SIG_DFL, or a callable object

Есть ли какой-нибудь pythoni c способ сборки пакетов catkin из-за запуска python программы?

1 Ответ

0 голосов
/ 13 января 2020

Оказывается, исключение, которое я видел, было связано с тем, что троллий не поддерживается должным образом в python3 .6. В самой последней версии catkin_tools троллей заменен на asyncio . Поскольку это изменение недоступно при установке через pip или apt, мне пришлось установить catkin из исходного кода.

Кроме того, способ решения моей проблемы, безусловно, можно улучшить, но пока работает.

from catkin_tools.commands import catkin
try:
   catkin.main(["build","testtarget","--cmake-args","-DFLAG"])
except SystemExit as ret:
   if ret.code == 0:
      return True
   else:
      return False
...