人们为什么在Python脚本的第一行上编写#!/ usr / bin / env python shebang?
在我看来,如果没有该行,文件运行相同。 #1楼 您可以使用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 #2楼 强调大多数人错过的一件事可能是有道理的,这可能会阻止立即理解。 在终端中键入 python ,通常不会提供完整路径。 而是在 PATH 环境变量中查找可执行文件。 反过来,当您想直接执行Python程序 /path/to/app.py ,必须告诉Shell使用什么解释器(通过 hashbang ,上面其他贡献者在解释什么)。 Hashbang希望有完整的口译员。 因此,要直接运行Python程序,您必须提供Python二进制文件的完整路径,该路径有很大差异,尤其是考虑到使用 virtualenv时 。 为了解决可移植性,使用了 /usr/bin/env 的技巧。 后者最初旨在就地更改环境并在其中运行命令。 如果未提供任何更改,它将在当前环境中运行该命令,从而有效地导致相同的 PATH 查找。 来自unix