使用#!python2无法在python2下运行

使用#!python2无法在python2下运行,python,python-2.7,python-3.x,Python,Python 2.7,Python 3.x,我在运行Windows的机器上安装了Python 2和Python 3 我正在通过cmd运行一个程序,它有命令#!python2位于代码的最顶端,我希望它在python2中运行 我的理解是,#!第一行的python2将迫使Python使用python2。相反,它使用Python3[因此,“print hello行会导致错误SyntaxError:call to print`]中缺少括号]通常哈希爆炸需要完整路径,例如: #!/usr/bin/python 如果您已经安装了它,那么在路径上的某个

我在运行Windows的机器上安装了Python 2和Python 3

我正在通过cmd运行一个程序,它有命令
#!python2
位于代码的最顶端,我希望它在python2中运行


我的理解是,
#!第一行的python2
将迫使Python使用python2。相反,它使用Python3[因此,“print hello
行会导致错误
SyntaxError:call to print`]中缺少括号]

通常哈希爆炸需要完整路径,例如:

#!/usr/bin/python
如果您已经安装了它,那么在路径上的某个地方有一个名为
python2
的可执行文件,您可以通过执行以下命令找到它的完整路径:

which python2
然后在中使用该命令的输出


当然,通过显式指定,您始终可以使用任何python版本运行脚本:

python2 your_script.py

这样运行,shebang将被完全忽略,python2将执行脚本。

Windows上的情况比Unix上的情况要复杂一些

对于Windows安装,当您安装Python时,安装程序实际上会将Python(.py)文件与
py.exe
相关联,后者是专门为在Windows上启动Python而设计的可执行文件。你可以在这本书里读到这一切

由于.py文件与该启动器关联,因此读取shebang行的所有魔力都在
py.exe
中实现。长话短说,你的第一行必须读

#!/usr/bin/env python2
为了工作。在中,阅读标题为“Python脚本启动”的部分以了解更多信息