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

在Github Actions中运行依赖rospy的测试文件的技术咨询

解决GitHub Actions中rospy导入问题的完整指南

嘿,我来帮你搞定这个问题!首先给你个明确结论:你完全不需要安装完整ROS,只需要rospy模块和必要的依赖就行——毕竟你已经用pytest模拟了node.Publisher,不需要ROS的核心服务(比如roscore、节点通信框架),只要rospy的Python模块能被正常导入就够了。

为什么你之前的安装会失败?

你用sudo apt-get install -y python-rospy报错找不到模块,主要有两个原因:

  1. Ubuntu 18.04的默认软件源里没有ROS包,必须先添加ROS官方的软件源才能安装rospy;
  2. 如果你用的是Python 3运行测试,而python-rospy是对应Python 2.7的包,Python 3自然找不到这个模块。

GitHub Actions中的正确配置步骤

下面是针对Ubuntu 18.04的完整CI配置方案,分Python 2.7和Python 3两种情况:

1. 基础配置(添加ROS源)

不管用哪个Python版本,第一步都要先添加ROS的官方软件源和密钥,否则apt找不到rospy包:

- name: 添加ROS软件源与密钥
  run: |
    sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu bionic main" > /etc/apt/sources.list.d/ros-latest.list'
    sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

2. 安装对应版本的rospy和pytest

如果你用Python 2.7(Ubuntu 18.04默认版本)

- name: 安装rospy与pytest
  run: sudo apt-get update && sudo apt-get install -y python-rospy python-pytest

如果你用Python 3

Ubuntu 18.04对应的ROS Melodic版本官方不支持Python 3,但可以安装社区维护的Python 3版本rospy:

- name: 安装Python 3版rospy与pytest
  run: sudo apt-get update && sudo apt-get install -y python3-rospy python3-pytest

3. 设置ROS环境变量并运行测试

rospy的模块路径是通过ROS的setup.bash脚本添加到Python路径中的,所以运行测试前必须先source这个脚本:

- name: 运行pytest测试
  run: |
    source /opt/ros/melodic/setup.bash
    pytest

完整的GitHub Actions示例配置

把上面的步骤整合到一个yaml文件里,就是这样:

name: ROS pytest CI
on: [push, pull_request]

jobs:
  test:
    runs-on: ubuntu-18.04
    steps:
      - name: 拉取代码
        uses: actions/checkout@v4

      - name: 添加ROS软件源与密钥
        run: |
          sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu bionic main" > /etc/apt/sources.list.d/ros-latest.list'
          sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

      - name: 安装rospy与pytest(Python 2.7)
        run: sudo apt-get update && sudo apt-get install -y python-rospy python-pytest

      # 如果用Python3,替换上面的安装步骤为:
      # - name: 安装Python3版rospy与pytest
      #   run: sudo apt-get update && sudo apt-get install -y python3-rospy python3-pytest

      - name: 运行测试
        run: |
          source /opt/ros/melodic/setup.bash
          pytest tests/  # 替换成你的测试目录路径

额外提示

  • 如果你可以切换测试环境到Ubuntu 20.04,会更顺畅——ROS Noetic版本原生支持Python 3,安装python3-rospy不会有兼容性问题;
  • 因为你已经用pytest模拟了Publisher,完全不需要启动roscore,节省CI时间;
  • 如果导入还是有问题,可以在运行测试前打印Python的路径确认:echo $PYTHONPATH,确保ROS的Python模块路径已经被添加进去。

内容的提问来源于stack exchange,提问作者Michael Teguh Laksana

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 13:47:37