36 lines
1.0 KiB
Python
36 lines
1.0 KiB
Python
|
|
#!/usr/bin/env python3
|
|||
|
|
# -*- coding: utf-8 -*-
|
|||
|
|
"""
|
|||
|
|
统一启动 gRPC 客户端脚本
|
|||
|
|
自动设置 PYTHONPATH,让 generated 下的 cmvr 包可用
|
|||
|
|
用法:
|
|||
|
|
python run_client.py get_joint_state_client
|
|||
|
|
python run_client.py movej_client
|
|||
|
|
"""
|
|||
|
|
|
|||
|
|
import os
|
|||
|
|
import sys
|
|||
|
|
import subprocess
|
|||
|
|
|
|||
|
|
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
|
|||
|
|
GENERATED_DIR = os.path.join(PROJECT_ROOT, "generated")
|
|||
|
|
CLIENTS_DIR = os.path.join(PROJECT_ROOT, "clients")
|
|||
|
|
|
|||
|
|
# 添加 generated 到 PYTHONPATH
|
|||
|
|
sys.path.insert(0, GENERATED_DIR)
|
|||
|
|
os.environ["PYTHONPATH"] = GENERATED_DIR + os.pathsep + os.environ.get("PYTHONPATH", "")
|
|||
|
|
|
|||
|
|
if len(sys.argv) < 2:
|
|||
|
|
print("请指定要运行的客户端脚本名,例如:get_joint_state_client")
|
|||
|
|
sys.exit(1)
|
|||
|
|
|
|||
|
|
client_name = sys.argv[1]
|
|||
|
|
client_script = os.path.join(CLIENTS_DIR, f"{client_name}.py")
|
|||
|
|
|
|||
|
|
if not os.path.isfile(client_script):
|
|||
|
|
print(f"客户端脚本不存在: {client_script}")
|
|||
|
|
sys.exit(1)
|
|||
|
|
|
|||
|
|
# 支持传递额外参数给客户端
|
|||
|
|
subprocess.run([sys.executable, client_script] + sys.argv[2:])
|