问题描述
在编写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.学会记录,每个人遇到了问题和解决办法可能都不会一样,一定要学会记录自己遇到的问题及解决办法,一方面是经验积累可以帮助其他人,一方面也是为自己再次解决问题提供思路和方向
好了,以上就是我解决问题的方法和心得,希望对小伙伴们有所启发和帮助!