我正在编写一个 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
有没有一些Pythonic方法可以从正在运行的Python程序中构建catkin包?
结果我看到的异常是由于 python3.6 没有正确支持 trollius。在最新版本的catkin_tools中,trollius 被 asyncio 取代 https://github.com/catkin/catkin_tools/pull/574。由于无法通过 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 False
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)