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

时间:2015-12-14 02:50:21

标签: python python-2.7 python-3.x

我在运行Windows的计算机上安装了Python 2和3。

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

据我了解,第一行上有#!python2会强制Python使用Python2。相反,它使用Python3 [因此行' print hello results in the error SyntaxError:调用print`中缺少括号。]

2 个答案:

答案 0 :(得分:3)

Windows上的故事比在Unix上要复杂得多。

对于Windows安装,当您安装Python时,安装程​​序实际上将Python(.py)文件与py.exe相关联,py.exe是专门用于在Windows上启动Python的可执行文件。您可以在PEP 397 -- Python launcher for Windows中阅读所有相关内容。

由于.py文件与该启动器相关联,因此阅读shebang行的所有魔力都在#!/usr/bin/env python2 中实现。长话短说,你的第一行必须阅读

{{1}}

为了工作。在PEP 397中,请阅读标题为" Python Script Launching"了解更多信息。

答案 1 :(得分:0)

通常,hash-bang需要一个完整的路径,例如:

#!/usr/bin/python

如果您安装了它,以便在您的路径上有一个名为python2的可执行文件,您可以通过执行命令找到它的完整路径:

which python2

然后,您可以在shebang中使用该命令的输出。

当然,您可以通过明确指定它来使用您想要的任何python版本运行脚本:

python2 your_script.py

以这种方式运行,shebang将被完全忽略,python2将执行该脚本。