为什么 ubuntu 12.04 中有不止一个 python 2 命令?

Ram*_*nez 2 python gnome-terminal symbolic-link 12.04

所以在玩一些别名时,我意识到终端中有三个 python 命令(不考虑 python 3 命令):

  • Python
  • 蟒蛇2
  • 蟒蛇2.7

所以我的问题是为什么会这样?为什么我们需要三个?我理解需要有一个通用的(python),并且需要有另一个来区分 python3 和 python2,但其余的我不知道。

此外,如何查看它们是否链接到同一个文件(符号链接)?

Rma*_*ano 6

python是发行版使用的默认解释器。将来它可能(或可能不1)指向 python3 。

python2是默认的 Python 2 解释器(如果python指向,则与上面相同python2,否则与上面相同)。它指向当前稳定/支持的解释器。

python2.7是特定的解释器 --- 例如python2.7,您可以将其作为当前的解释器,并且python2.1您需要检查兼容性问题。

要查看所有这些:

[romano:~] % ls -l /usr/bin/python /usr/bin/python2 /usr/bin/python2.7
lrwxrwxrwx 1 root root       9 jul 22  2014 /usr/bin/python -> python2.7
lrwxrwxrwx 1 root root       9 jul 22  2014 /usr/bin/python2 -> python2.7
-rwxr-xr-x 1 root root 3345416 jun 22 20:51 /usr/bin/python2.7
Run Code Online (Sandbox Code Playgroud)

因此,在您的脚本中——在 shebang 2 中——python如果您想使用发行版的默认解释器,您可以使用(如果您希望未来完全安全,您的脚本可以在版本 23 中运行,但请参阅下面的注释 1); python2或者,python3如果您特别需要版本 23,但可以使用发行版提供的默认版本(推荐);python2.7如果您需要该特定版本并且您希望脚本在不可用时失败。


1认为它永远不会改变指向python3,它太危险了。但是好吧,我没有水晶球......

2 this is the first line of the executable scripts that for Python should look like

#! /usr/bin/env python2
Run Code Online (Sandbox Code Playgroud)