我在运行Windows的计算机上安装了Python 2和3。
我正在通过cmd运行一个程序,它在代码的最顶部有一个命令#!python2
,我希望它能在Python2中运行。
据我了解,第一行上有#!python2
会强制Python使用Python2。相反,它使用Python3 [因此行' print hello results in the error
SyntaxError:调用print`中缺少括号。]
答案 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
将执行该脚本。