是否可以获取ros setup.bash并在python脚本中生效

问题描述 投票:0回答:1

通常我会这样做:

source /ros/setup.bash && python myscript.py

但我希望让它变得更容易,就像

python myscript.py
一样,即 是否可以在 python 脚本中执行
source /ros/setup.bash
,然后在运行 py 脚本之前无需在终端中执行此操作?

我尝试过

myscript.py

import os
os.system("source /ros/setup.bash")
os.popen("source /ros/setup.bash")  

import subprocess
subprocess.call("source /ros/setup.bash") 
subprocess.Popen("source /ros/setup.bash") 

import rclpy

# my code

但没有任何效果,总是出现类似的错误

ModuleNotFoundError: No module named 'rclpy'

这意味着 ros 环境未加载。

python shell environment-variables ros2
1个回答
0
投票

到目前为止,我尝试过:

cmd = ['bash','-c', 'source /ros/setup.bash && env']
env = subprocess.check_output(cmd, stderr=subprocess.STDOUT, text=True)


for e in env.split("\n"):
    if e:
        name = e.split("=", 1)[0]
        value = e.split("=", 1)[1]
        os.environ[name] = value
        


import rclpy
# my code

但仍然出现错误

ModuleNotFoundError: No module named 'rclpy'

© www.soinside.com 2019 - 2024. All rights reserved.