Python文件#/usr/bin/env python和#coding:utf-8声明头部

一、参考资料

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 -*-

猜你喜欢

转载自blog.csdn.net/m0_37605642/article/details/131937258