Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从控制台运行python脚本时,py与python之间有什么区别_Python_Shebang - Fatal编程技术网

从控制台运行python脚本时,py与python之间有什么区别

从控制台运行python脚本时,py与python之间有什么区别,python,shebang,Python,Shebang,我一直在阅读有关python的文章,在使用shebang行时,我有一些疑问。当我跑步时: py file_name.py 它使用我在shebang行中指出的python版本执行脚本,但是当我执行时 python file_name.py 使用的是Python的最后一个版本,而不是我指定的版本。我想知道从命令行运行脚本时使用python和py之间的区别。我的shebang行是#!python3.4 使用python或py是否有不同的含义,或者最终两者都是相同的?要查看每个命令使用的python

我一直在阅读有关python的文章,在使用shebang行时,我有一些疑问。当我跑步时:

py file_name.py
它使用我在shebang行中指出的python版本执行脚本,但是当我执行时

python file_name.py
使用的是Python的最后一个版本,而不是我指定的版本。我想知道从命令行运行脚本时使用
python
py
之间的区别。我的shebang行是
#!python3.4


使用
python
py
是否有不同的含义,或者最终两者都是相同的?

要查看每个命令使用的python版本,请运行以下两个命令:

python -c "import sys;print(sys.version)"
py -c "import sys;print(sys.version)"
如果两者显示相同的版本,则在您的系统上,它们当前都是相同的但是,其中一个可能会更新。我个人建议两者都不依赖,并在脚本中显式调用所需的Python版本。

(此答案假设您使用的是Windows,但我希望它也主要适用于其他操作系统,包括一些细节)

“python.exe”是实际的解释器。系统上的每个Python版本都有一个。在命令行上运行“python”时执行哪个版本取决于
PATH
环境变量和当前工作目录


“py.exe”是最新版本。您可能只有一个,即使您有多个Python安装。我的在
C:\Windows
中。它查看脚本,决定它使用的版本,并将实际执行委托给适当的解释器。

py | xargs ls-a在哪里
python scriptname.py
表示“使用
python
启动的解释器运行
scriptname.py
”。我从未使用过
py
,但另一个选项是设置一个显式的shebang(例如
#!/usr/bin/env python3
)并使脚本可执行,然后您可以直接运行它。我使用了这段代码来检查运行的版本,这就是我提出这个问题的原因。当我使用
py
时,使用了我指定的版本,但在使用
python
时没有使用。我想知道两者之间的细微差别,尽管乍一看两者似乎是一样的。@lmiguelvargasf:我已经在编辑中提到了你的评论。