解决编译ros2功能包报错ModuleNotFoundError: No module named ‘em‘

本文讲述了在ROS2项目中使用自定义数据接口功能包时遇到的编译报错,着重介绍了如何通过定位问题、搜索解决方案和版本兼容性来逐步解决em模块、catkin_pkg和lark模块的缺失问题,以及强调了问题定位、搜索、耐心和记录的重要性。
摘要由CSDN通过智能技术生成

问题描述

在编写ros2项目中,自定义数据接口功能包,进行编译时出现报错提示

colcon build --packages-select robot_interfaces

报错内容

问题定位

通过查看报错内容,很明显发现是缺少em模块导致的,解决思路那就是下载安装em模块呗

根据网上搜索查询如何安装em模块,总结两种方式

1.这种是一个全局管理员身份安装的方法,如果你是基于系统python解释器,可以尝试一下

sudo apt-get install python-empy

2. 如果上一步没成功或者你是基于python虚拟环境,尝试运行这个命令安装

pip install empy

很遗憾的是,虽然通过以上方式解决了没有em模块的问题,但是我这边又遇到新的报错

这个时候很多小伙伴们没有仔细看报错的内容,就以为 安装empy模块是没用的,就放弃了,其实报错的内容已经发生了变化

根据报错的类型发现是提示这个em模块没有找到属性和方法,问题再次定位到em模块,根据我的经验判断,一定是这个版本的em与当前的python版本不兼容所导致(这是一个利用python开发时常见的问题-----第三方库版本不兼容)

怀疑一旦产生,罪名就已经成立,那就去empy pypi官网查一下版本兼容情况

不难发现,目前最新的empy版本已经是4.1了,一定要秉承着最新的不一定时最兼容的原则,我们查看一下历史版本,选择一个旧点的版本重新安装(我这里选了3.3.2版本,因为我的python是3.10的,可以给小伙伴们提供一个参考吧)

pip install empy==3.3.2

重新安装后,能不能一次性成功就的靠小伙伴们的运气了,反正我是一次性就解决了,如果一次性没成功,那就多试几个版本

新的问题

在安装旧的版本的empy模块后,重新编译,上面的报错算是解决了,但是遇到了新的报错

很明显根据报错内容,又是少了catkin_pkg模块,既然catkin_pkg又来凑热闹,那就装!

pip install catkin_pkg

装完继续编译,又出现报错

又是少了lark模块,那再装!

pip install lark

装完继续编译,终于终于终于没有报错了,终于解决了!

总结

通过以上解决报错的过程,最后我想说的就是

1.学会定位,遇到报错不要紧张,从一大堆报错中定位到问题本身,可以根据主要的报错类型去定位问题,大致知道是什么类型的报错

2.学会搜素和尝试,根据错误类型快速定位到问题后,可以通过网络查询问题原因,因为你遇到的问题别人也一定会遇到,再根据别人的解决方法尝试一下解决自己的问题

3.学会耐心,其实再每次尝试后,不要没有耐心再次去定位问题,因为每次的报错很可能就在你的尝试中发生了变化,不要着急,逐个解决就行了

4.学会记录,每个人遇到了问题和解决办法可能都不会一样,一定要学会记录自己遇到的问题及解决办法,一方面是经验积累可以帮助其他人,一方面也是为自己再次解决问题提供思路和方向

好了,以上就是我解决问题的方法和心得,希望对小伙伴们有所启发和帮助!

  • 15
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值