通常我会这样做:
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 环境未加载。
到目前为止,我尝试过:
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'