我在Python文件的顶部看到了这些:

#!/usr/bin/env python
#!/usr/bin/env python3

在我看来,没有这一行,文件运行是一样的。


当前回答

您可以使用virtualenv尝试解决这个问题

这里是test.py

#! /usr/bin/env python
import sys
print(sys.version)

创建虚拟环境

virtualenv test2.6 -p /usr/bin/python2.6
virtualenv test2.7 -p /usr/bin/python2.7

激活每个环境,然后检查差异

echo $PATH
./test.py

其他回答

它告诉解释器,当你有多个版本的python时,使用哪个版本的python运行程序。

这是一个shell约定,告诉shell哪个程序可以执行脚本。

#!/usr/bin/env python

解析为Python二进制文件的路径。

也许你的问题是这样的:

如果你想使用:$python myscript.py

你根本不需要那句台词。系统将调用python,然后python解释器将运行您的脚本。

但如果你打算使用:$./myscript.py

像普通程序或bash脚本一样直接调用它,您需要编写这一行来指定系统使用哪个程序来运行它(并使其可执行chmod 755)

如果安装了多个版本的Python, /usr/bin/env将确保使用的解释器是环境$PATH中的第一个解释器。另一种方法是硬编码类似#!/usr/bin/python;这是可以的,但是不太灵活。

在Unix中,要解释的可执行文件可以通过#!在第一行的开头,后面跟着解释器(以及它可能需要的任何标志)。

如果您谈论的是其他平台,当然,这条规则不适用(但“shebang行”没有害处,如果您将该脚本复制到基于Unix的平台,如Linux、Mac等,则会有所帮助)。

这是推荐的方法,在文档中提出:

2.2.2. 可执行Python脚本 在BSD的Unix系统上,可以直接编写Python脚本 可执行,就像shell脚本一样 # !/usr/bin/env python3.2

从http://docs.python.org/py3k/tutorial/interpreter.html executable-python-scripts