ROS2 Python服务节点调用SPIGA模块出现ModuleNotFoundError求助
问题原因与解决方法
核心问题
SPIGA不是标准ROS2包,即使放在ros2_ws/src目录下,colcon构建时不会自动将其Python模块路径注入ROS2运行环境,导致节点运行时Python无法找到SPIGA模块。另外,你在package.xml中添加的SPIGA依赖无效,因为colcon只识别ROS2包作为依赖项。
解决方法
方法1:将SPIGA安装到Python环境(推荐)
进入SPIGA目录执行开发模式安装,这样Python全局环境能识别到该模块,且后续修改SPIGA代码无需重新安装:
cd ros2_ws/src/SPIGA pip install -e .
方法2:在ROS2节点中手动添加SPIGA路径
如果不想全局安装,可在你的Python服务节点代码开头添加路径配置:
import sys from ament_index_python.packages import get_package_share_directory import os # 获取SPIGA的绝对路径 spiga_dir = os.path.join(get_package_share_directory('py_inference_service'), '../SPIGA') sys.path.append(os.path.abspath(spiga_dir)) # 之后再导入SPIGA模块 from SPIGA.spiga.inference.config import ModelConfig
同时需要在py_inference_service的package.xml中添加ament_index_python依赖:
<exec_depend>ament_index_python</exec_depend>
额外检查
- 每次colcon构建后,务必执行
source install/setup.bash加载最新环境变量 - 移除package.xml中无效的SPIGA依赖项,因为它不是ROS2包,colcon无法解析
内容的提问来源于stack exchange,提问作者TheProbPro
相关产品推荐
相关产品推荐

