起因
在学习ROS时,尝试写一个python包,在catkin_make编译时出现报错:
SyntaxError: Non-ASCII character ‘\xe5’ in file /home/pb/my_ws/helloword_ws/src/helloworld/scripts/helloworld_p.py on line 8, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
异常代码如下:
#! /usr/bin/env python
import rospy
if __name__=="__main__":
# 初始化节点
rospy.init_node("hello_py")
# 输出日志
rospy.loginfo("Hello world!")
原因
经过排查原因是因为代码里使用了中文注释,Python的源代码文件默认使用ASCII编码,无法识别中文
解决方法
如果要继续使用中文注释,就需要在文件的开头添加一个编码声明,告诉Python解释器使用哪种编码来正确读取文件。
中文可以采用utf-8编码方式,在python文件的开头添加:
# coding: utf-8
这样继续在代码里添加中文注释,继续使用 catkin_make 指令不会再报此错误