You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ROS2中运行带依赖Python文件报错:ros2 run无法找到依赖求助

问题分析与解决办法

这个问题十有八九和CMakeLists.txt的配置脱不了干系,核心原因是VS Code和ros2 run的运行环境存在差异:

1. 环境差异导致的路径问题

VS Code运行代码时,会自动将项目本地的子文件夹(比如你提到的Yolov5_StrongSORT_OSNet)加入Python的搜索路径,因此能正常找到依赖模块。但使用ros2 run时,ROS2是按照包安装后的路径加载环境的,本地子文件夹默认不会被纳入Python搜索范围,自然就找不到对应模块了。

2. CMakeLists.txt必须调整的配置点

要让ros2 run识别到子文件夹里的模块,你需要在CMakeLists.txt中添加以下配置:

  • 将Yolov5_StrongSORT_OSNet整个文件夹安装到ROS2包的共享路径下,添加这条指令:
    install(DIRECTORY
      Yolov5_StrongSORT_OSNet
      DESTINATION share/${PROJECT_NAME}/
    )
    
  • 同时要在package.xml中声明Python依赖,确保<exec_depend>节点包含python3:
    <exec_depend>python3</exec_depend>
    

3. 临时救急的代码修改方案

如果不想修改CMake配置,也可以在sub_UNITY_YOLOSORT.py开头手动将子文件夹路径添加到Python搜索路径:

import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent / "Yolov5_StrongSORT_OSNet"))

不过这种方法不够规范,长期维护还是推荐修改CMake配置的方式。

4. 验证步骤

修改完成后,重新编译包:colcon build --packages-select 你的包名,然后打开新终端执行source install/setup.bash,再运行ros2 run命令测试。

内容的提问来源于stack exchange,提问作者tgr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 06:20:24