在 Python 脚本的第一行经常见到这样的注释:
#!/usr/bin/env python3
或者
#!/usr/bin/python3
含义
在脚本中, 第一行以 #!
开头的代码, 在计算机行业中叫做 "", 也叫做 sha-bang / hashbang / pound-bang / hash-pling, 其作用是"指定由哪个解释器来执行脚本".
为什么要指定解释器?
举个例子, 很多人在系统中同时安装了 Python2 和 Python3, 但是 2 和 3 是不兼容的, 所以执行脚本时必须指定解释器.
再比如说, Unix 系统中一般同时安装了多个版本的 Shell, 比如常用的 bash、sh 和 现代的 zsh, 但是这些 shell 的语法并不完全相同, 所以也需要指定解释器.
如何使用 Shebang 指定 Python 解释器?
可以在脚本第一行写上 #!/usr/bin/env python3
或者 #!/usr/bin/python3
:
-
#!/usr/bin/python3
表示 python3 解释器所处的绝对路径就是 /usr/bin/python3, 路径被写死了, 类似于编程中的"硬编码". 之所以有这种写法, 是因为在类 Unix 系统中, python 解释器一般情况下都位于这个路径. 不过, 如果碰到 python 解释器不在该路径下的话, 脚本就无法执行了! -
#!/usr/bin/env/ python3
表示从 "PATH 环境变量"中查找 python3 解释器的位置, 路径没有被写死, 而是在"环境变量"中寻找 python3 解释器的安装路径, 再调用该路径下的解释器来执行脚本.
显然, 采用 #!/usr/bin/env python3
的写法更灵活更具有通用性, 推荐使用这种写法.
注意
#!
之后的空格是可选的,#!/usr/bin/env python3
和#! /usr/bin/env python3
这两种写法都是允许的- 大部分 Python 文件不必写 Shebang, 只有被直接执行的文件才有必要加入 Shebang
额外
Python 脚本开头经常见到这样的代码:
#!/usr/bin/env python#coding=utf-8
之所以写 #coding=utf-8
是为了指定字符编码.