一、参考资料
PEP 263 – Defining Python Source Code Encodings
二、#/usr/bin/env python
与#coding:utf-8
1. Python头部声明
以下代码,放在python文件的头部,仅作为声明作用。
#!/usr/bin/python
# coding:utf-8
#!/usr/bin/env python
# coding:utf-8
#! /usr/bin/env python
# -*- coding: UTF-8 -*-
如果是python3,则改为python3。
#!/usr/bin/env python3
# coding:utf-8
2. #!/usr/bin/env python
(推荐使用)
根据PATH环境变量中指定的python解释器,执行python脚本。
如果在linux环境中,创建了多个Anaconda或者virtualenv虚拟环境,而这些虚拟环境在不同路径中,会有各自的python解释器。使用#!/usr/bin/env python
声明,可以保证使用各自虚拟环境中的 python解释器来执行python脚本。
3. #!/usr/bin/python
指定 /usr/bin/python
目录下的python解释器执行python脚本。
4. #coding:utf-8
该文件的编码格式为 utf-8
。
三、FAQ
Q:SyntaxError: Non-ASCII character '\xe5' in file
yoyo@yoyo:~/catkin_ws$ rosrun kitti_tutorial helloworld.py
File "/home/yoyo/catkin_ws/src/kitti_tutorial/scripts/helloworld.py", line 8
SyntaxError: Non-ASCII character '\xe5' in file /home/yoyo/catkin_ws/src/kitti_tutorial/scripts/helloworld.py on line 8, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
错误原因:
Python默认是以ASCII作为编码方式的,如果Python源码中包含中文(或者其他非英语系的语言),则产生冲突,即便是编写的Python源文件以UTF-8格式保存,也会报错。
解决办法:
Python文件头部加入以下代码
#! /usr/bin/env python
# -*- coding: UTF-8 -*-