典型的标题应该是
#!/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)
祝愿和编码愉快.