我在Python文件的顶部看到了这些:
#!/usr/bin/env python
#!/usr/bin/env python3
在我看来,没有这一行,文件运行是一样的。
我在Python文件的顶部看到了这些:
#!/usr/bin/env python
#!/usr/bin/env python3
在我看来,没有这一行,文件运行是一样的。
当前回答
扩展一下其他的答案,这里有一个小例子,说明你的命令行脚本会因为不小心使用/usr/bin/env shebang行而陷入麻烦:
$ /usr/local/bin/python -V
Python 2.6.4
$ /usr/bin/python -V
Python 2.5.1
$ cat my_script.py
#!/usr/bin/env python
import json
print "hello, json"
$ PATH=/usr/local/bin:/usr/bin
$ ./my_script.py
hello, json
$ PATH=/usr/bin:/usr/local/bin
$ ./my_script.py
Traceback (most recent call last):
File "./my_script.py", line 2, in <module>
import json
ImportError: No module named json
json模块在Python 2.5中不存在。
防止这类问题的一种方法是使用通常与大多数python一起安装的版本化python命令名:
$ cat my_script.py
#!/usr/bin/env python2.6
import json
print "hello, json"
如果你只需要区分Python 2。3. Python。x,最近发布的Python 3也提供了一个python3名称:
$ cat my_script.py
#!/usr/bin/env python3
import json
print("hello, json")
其他回答
也许你的问题是这样的:
如果你想使用:$python myscript.py
你根本不需要那句台词。系统将调用python,然后python解释器将运行您的脚本。
但如果你打算使用:$./myscript.py
像普通程序或bash脚本一样直接调用它,您需要编写这一行来指定系统使用哪个程序来运行它(并使其可执行chmod 755)
技术上讲,在Python中,这只是一个注释行。
这一行只在从shell(从命令行)运行py脚本时使用。这就是所谓的“Shebang!”,它被用于各种情况,而不仅仅是Python脚本。
在这里,它指示shell启动特定版本的Python(以处理文件的其余部分)。
这告诉脚本python目录在哪里!
#! /usr/bin/env python
这是一个shell约定,告诉shell哪个程序可以执行脚本。
#!/usr/bin/env python
解析为Python二进制文件的路径。
这是推荐的方法,在文档中提出:
2.2.2. 可执行Python脚本 在BSD的Unix系统上,可以直接编写Python脚本 可执行,就像shell脚本一样 # !/usr/bin/env python3.2
从http://docs.python.org/py3k/tutorial/interpreter.html executable-python-scripts