关于 Python 映射的问题(/etc/alternatives/python)

关于 Python 映射的问题(/etc/alternatives/python)

我使用的是 Ubuntu 16.04,目前安装了 3 个 Python 版本:Python 2.7、3.5 和 3.6。我有一个与 /etc/alternatives/python 快捷方式相关的问题。

以下是一些简要的背景信息:

ls -l /usr/bin/python*

# Output:
/usr/bin/python -> /etc/alternatives/python
/usr/bin/python2 -> python2.7
/usr/bin/python2.7
/usr/bin/python2.7-config -> x86_64-linux-gnu-python2.7-config
/usr/bin/python2-config -> python2.7-config
/usr/bin/python3 -> python3.6
/usr/bin/python3.5
/usr/bin/python3.5-config -> x86_64-linux-gnu-python3.5-config
/usr/bin/python3.5m
/usr/bin/python3.5m-config -> x86_64-linux-gnu-python3.5m-config
/usr/bin/python3.6
/usr/bin/python3.6m
/usr/bin/python3-config -> python3.5-config
/usr/bin/python3m -> python3.5m
/usr/bin/python3m-config -> python3.5m-config
/usr/bin/python-config -> python2.7-config

我通过输入以下内容成功将“python3”快捷方式(最初打开 Python 3.5)映射到 3.6:

sudo ln -s python3.6 python3

我的第一个输出清楚地表明这已经起作用了。据我所知,使用“ln -s”会在命令“python3”和/usr/bin/python3.6之间创建一个符号链接,这样当我输入“python3”时,我的计算机就知道我的意思是/user/bin/python3.6。

我的问题是:为什么“ /usr/bin/python -> /etc/alternatives/python”的快捷方式不同。我见过有人使用以下命令来更改“python”的映射:

sudo update-alternatives --config python

# My output in this case:
[sudo] password for m93: 
There are 3 choices for the alternative python (providing /usr/bin/python).

Selection    Path                Priority   Status
------------------------------------------------------------
  0          /usr/bin/python3.6   2         auto mode
* 1          /usr/bin/python2.7   1         manual mode
  2          /usr/bin/python3.5   1         manual mode
  3          /usr/bin/python3.6   2         manual mode

据我了解,这意味着 python 2.7 对应于“python”。但是:

  • 为什么映射“python3”的方式如此不同?
  • 手动模式和自动模式分别是什么意思?
  • 优先级别是什么意思?

更新

当我创建这个 /etc/alternatives/python 时,我并不知道自己在做什么,但我按照此链接中的说明进行操作 https://unix.stackexchange.com/questions/410579/change-the-python3-default-version-in-ubuntu

简而言之,这涉及:来自评论:

$ sudo update-alternatives --config python
#Will show you an error: update-alternatives: error: no alternatives for python3 

$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.5 1
$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2
$ sudo update-alternatives --config python

然而,在某个地方,我感到困惑,最终得到了上面显示的输出。我可以删除 /etc/alternatives/python 吗?

非常感谢。

相关内容