我正在编写一个python脚本来组织一个由几个repos组成的项目。其中一些目标是使用catkin构建的。由于catkin是一个python工具,我怀疑一定有一种方法可以从python脚本中调用与catkin build等效的工具。然而,我正在努力做到这一点。到目前为止,我做过的最接近的是:
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有没有一些python的方法可以用运行中的python程序来构建catkin包?
发布于 2020-01-13 21:27:43
事实证明,我看到的异常是因为在python3.6中没有正确支持trollius。在最新版本的catkin_tools中,trollius is replaced by asyncio。由于此更改不能通过pip或apt install获得,因此我必须从源安装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 Falsehttps://stackoverflow.com/questions/59612739
复制相似问题