我在运行Windows的机器上安装了Python 2和3。
我正在通过cmd运行一个程序,它的命令#!python2位于代码的最顶端,我希望它能在Python2中运行。
我的理解是,第一行中的#!python2将强制Python使用Python2。相反,它使用Python3,因此行“在调用print时打印Python3缺失括号”。
发布于 2015-12-14 02:55:49
这个故事在Windows上比在Unix上要复杂一些。
对于Windows,在安装Python时,安装程序实际上将Python (.py)文件与py.exe (一种专门为在Windows上启动Python而制作的可执行文件)关联起来。您可以在PEP 397 --用于Windows的Python启动程序中阅读有关它的所有内容。
因为.py文件与启动程序相关联,所以读取shebang行的所有魔力都是在py.exe中实现的。长话短说,你的第一行必须读
#!/usr/bin/env python2为了工作。在佩普397中,请阅读标题为"Python启动“的部分,以获得更多信息。
发布于 2015-12-14 02:51:26
通常,散列需要一个完整的路径,例如:
#!/usr/bin/python如果您已经安装了这样一个可执行文件,在您的路径中有一个名为python2的可执行文件,您可以通过执行以下命令找到它的完整路径:
which python2然后在谢邦中使用该命令的输出。
当然,通过显式地指定脚本,您可以使用您想要的任何python版本来运行脚本:
python2 your_script.py以这种方式运行,shebang将被完全忽略,python2将执行脚本。
https://stackoverflow.com/questions/34259044
复制相似问题