【Debug记录】Ros-- catkin_make报错:‘file‘ object has no attribute ‘push‘/safe_execute_process.cmake:11

Ros Melodic catkin_make报错解决办法

报错信息:

Traceback (most recent call last):
File “/usr/bin/empy”, line 3302, in
if name == ‘main’: main()
File “/usr/bin/empy”, line 3300, in main
invoke(sys.argv[1:])
File “/usr/bin/empy”, line 3291, in invoke
interpreter.shutdown()
File “/usr/bin/empy”, line 2157, in shutdown
self.finalize()
File “/usr/bin/empy”, line 2646, in finalize
self.push()
File “/usr/bin/empy”, line 2200, in push
sys.stdout.push(self)
AttributeError: ‘file’ object has no attribute ‘push’
CMake Error at /opt/ros/melodic/share/catkin/cmake/safe_execute_process.cmake:11 (message):
execute_process(/home/chen/catkin_ws/build/catkin_generated/env_cached.sh
“/usr/bin/python2” “/usr/bin/empy” “–raw-errors” “-F”
“/home/chen/catkin_ws/build/catkin_generated/order_packages.py” “-o”
“/home/chen/catkin_ws/build/catkin_generated/order_packages.cmake”
“/opt/ros/melodic/share/catkin/cmake/em/order_packages.cmake.em”) returned
error code 1

在这里插入图片描述

报错原因:

以上报错无论在空的工作空间下还是在有代码文件的工作空间下均会产生,原因在于Ros Melodic中默认的编译环境为python2,在与当前python版本冲突时,会出现这类报错。

解决办法:

1.更换当前python版本(参考文章:Ubuntu18.04切换python版本+修改python版本优先级);
2.若更换python版本后依然存在以上报错,则使用以下命令执行catkin_make操作:

catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3

若不想每次编译都执行这么复杂的命令,可以对catkin_make脚本进行更改:

sudo chmod 777 /opt/ros/melodic/bin/catkin_make
gedit /opt/ros/melodic/bin/catkin_make

打开后将第一行改为#!/usr/bin/python3之后再正常使用catkin_make进行编译即可。
在这里插入图片描述

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值