今天写thrift的python脚本很好奇开头的这行代码啥意思,就总结一下。
#! /usr/bin/env python3
这句话的作用: 指定用什么解释器运行脚本以及解释器所在的位置。
解释: 这里指定该脚本使用python3解释器,该解释器的位置在/usr/bin/env
中。
以main.py为例,脚本内容如下:
def main():
print("Start Match System")
if __name__ == "__main__":
main()
运行脚本:
python3 main.py
输出:
Start Match System
我们根据之前所学的shell脚本 的运行方式还有一种方式运行:
./main.py
这时会提示报错,文件无可执行的权限。
-bash: ./main.py: Permission denied
给文件添加可执行权限。
chmod +x main.py
继续使用./main.py
运行,会提示报错。
./main.py: line 1: syntax error near unexpected token `('
./main.py: line 1: `def main():'
这是因为Linux系统中默认脚本为shell脚本,而脚本的默认解释器是bash。这里就把main.py
当成shell脚本解析。也就导致出错了。
解决方法: 添加下方语句。
#! /usr/bin/env python3
声明这个文件是一个python3脚本,要使用python3解释器来运行。
这时,我们再使用./main.py
就能成功运行。
输出:
Start Match System
$\color{red}{注意}$: 有时候也可能会看到别人写成#! /usr/bin/python3
,这种写法有时候可能不行,因为python3解释器没有装在/usr/bin/
目录,改成其所在目录就行了,或者更通用的方法是:#! /usr/bin/env python3
即可。