ubuntu 18.04 和 ubuntu 20.04 上的 Python 版本歧义

ubuntu 18.04 和 ubuntu 20.04 上的 Python 版本歧义

我无法理解我陷入了什么困境,有人可以解释一下这里发生了什么以及我该如何解决吗?命令行的屏幕截图

$ python --version
Python 3.6.5

$ which python
/usr/bin/python

$ ls -l /usr/bin/python
lrwxrwxrwx 1 root root 9 Apr 16  2018 /usr/bin/python -> python2.7

编辑:命令的输出type -a python截屏

$ type -a python
python is aliased to 'python3.6'
python is /usr/bin/python
python is /home/jenim/anaconda3/bin/python

注意:我发布问题后更新到了 ubuntu 20.04,情况发生了以下变化,截屏

jenim : ~/Desktop
$ python --version
Python 3.6.5

jenim : ~/Desktop
$ which python
/usr/bin/python

jenim : ~/Desktop
$ ls -l /usr/bin/python
lrwxrwxrwx 1 root root 7 Apr 15 16:15 /usr/bin/python -> python2

jenim : ~/Desktop
$ ls -l /usr/bin/python2
lrwxrwxrwx 1 root root 9 Mar 13 18:01 /usr/bin/python2 -> python2.7

jenim : ~/Desktop
$ ls -l /usr/bin/python2.7
-rwxr-xr-x 1 root root 3694632 Apr  7 17:35 /usr/bin/python2.7

现在我已经更新到 ubuntu 20.04,我想知道我的系统上怎么还有 Python 2。ubuntu 20.04 的发行说明说它不再支持 Python 2

编辑 2:按照库尔菲的评论 我理解,python 被别名为 python3.6。所以我删除了别名,现在事情似乎合理了,除了为什么没有which python别名为 python3.6 ?

答案1

python由于您已将 别名python为 ,因此每次调用时都会调用 Python3.6 python3.6。原因是which看不到别名是因为which扫描PATH匹配参数名称的可执行文件。在您的例子中,which实际上是给出的输出/usr/bin/python。来自which的手册页

它返回在当前环境中执行的文件(或链接)的路径名,其参数是作为严格符合 POSIX 的 shell 中的命令给出的。它通过在 PATH 中搜索与参数名称匹配的可执行文件来实现此目的。它没有规范化路径名。

相关内容