Python脚本标题

Sta*_*tan 73 python scripting

典型的标题应该是

#!/usr/bin/env python
Run Code Online (Sandbox Code Playgroud)

但是我发现下面的代码在执行脚本时也有效 $python ./my_script.py

#!/usr/bin/python
#!python
Run Code Online (Sandbox Code Playgroud)

这两个标题有什么区别?第二个问题可能是什么问题?还请讨论python解释器的情况是否在PATH中.谢谢.

Nor*_*sey 93

首先,只要你明确地使用解释器运行脚本,就像在

$ python ./my_script.py
$ ksh ~/bin/redouble.sh
$ lua5.1 /usr/local/bin/osbf3
Run Code Online (Sandbox Code Playgroud)

#!行始终被忽略.该#!行仅是可执行脚本的Unix功能,您可以在手册页中查看execve(2)完整的文档.在那里,您会发现下面的单词#!必须是有效可执行文件的路径名.所以

#!/usr/bin/env python
Run Code Online (Sandbox Code Playgroud)

执行python用户的任何内容$PATH.这种形式对于移动的Python解释器具有弹性,这使得它更具可移植性,但这也意味着用户可以通过在其前面放置一些东西来覆盖标准的Python解释器$PATH.根据您的目标,此行为可能会也可能不会.

下一个,

#!/usr/bin/python
Run Code Online (Sandbox Code Playgroud)

处理安装Python解释器的常见情况/usr/bin.如果它安装在其他地方,你输了.但这是确保您获得所需版本的好方法,或者根本没有任何内容("失败停止"行为),如

#!/usr/bin/python2.5
Run Code Online (Sandbox Code Playgroud)

最后,

#!python
Run Code Online (Sandbox Code Playgroud)

仅当python运行脚本时当前目录中有可执行文件时才有效.不建议.


小智 24


我会在你的脚本开头建议3件事:

首先,正如已经说过的使用环境:

#!/usr/bin/env python
Run Code Online (Sandbox Code Playgroud)

其次,设置你的编码:

# -*- coding: utf-8 -*-
Run Code Online (Sandbox Code Playgroud)

三,设置一些doc字符串:

"""This is a awesome
    python script!"""
Run Code Online (Sandbox Code Playgroud)

而且我肯定会使用" "(4个空格)来识别.
最终标题将如下所示:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""This is a awesome
        python script!"""
Run Code Online (Sandbox Code Playgroud)


祝愿和编码愉快.


Mar*_*ers 5

Python可执行文件可能安装在/ usr/bin以外的位置,但env几乎总是存在于该位置,因此使用/usr/bin/env更具可移植性.