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进行编译即可。

在这里插入图片描述