如何修复——bash:/usr/bin/python:符号链接级别太多

How to fix -- bash: /usr/bin/python: Too many levels of symbolic links

我想将 python3 作为我在 rhel 上的默认设置,所以我在

上遵循了以下内容
sudo ln -fs /usr/bin/python3 /usr/bin/python

它将默认值更改为 3.6.8

root@rhel:~# python -V
Python 3.6.8

然后我尝试了 yum install python-pip:

root@rhel:~# yum install python-pip
  File "/usr/bin/yum", line 30
    except KeyboardInterrupt, e:
                        ^
SyntaxError: invalid syntax

当我尝试其他几个命令时发生了这种情况。我尝试通过

恢复更改
root@rhel:~# sudo ln -fs /usr/bin/python /usr/bin/python

但是我 运行 变成了

root@rhel:~# python -V
bash: /usr/bin/python: Too many levels of symbolic links

根据我在需要断开符号链接的地方阅读的内容,我猜想。以下是我的 /usr/bin/

ls -l /usr/bin | grep python

lrwxrwxrwx    1 root root          15 Oct 21 14:12 python -> /usr/bin/python
lrwxrwxrwx    1 root root          14 Aug  8 05:53 python-config -> python2-config
lrwxrwxrwx    1 root root           9 Aug  8 05:51 python2 -> python2.7
lrwxrwxrwx    1 root root          16 Aug  8 05:53 python2-config -> python2.7-config
-rwxr-xr-x    1 root root        7144 Jun 11 10:34 python2.7
-rwxr-xr-x    1 root root        1835 Jun 11 10:34 python2.7-config
lrwxrwxrwx    1 root root           9 Aug  8 05:51 python3 -> python3.6
lrwxrwxrwx    1 root root          16 Aug  8 05:53 python3-config -> python3.6-config
lrwxrwxrwx    1 root root          20 Aug  8 05:53 python3-debug -> /usr/bin/python3.6dm
-rwxr-xr-x    2 root root       11336 Jun 11 15:17 python3.6
lrwxrwxrwx    1 root root          17 Aug  8 05:53 python3.6-config -> python3.6m-config
-rwxr-xr-x    1 root root       11336 Jun 11 15:17 python3.6dm
-rwxr-xr-x    1 root root         175 Jun 11 15:16 python3.6dm-config
-rwxr-xr-x    1 root root        3396 Jun 11 14:54 python3.6dm-x86_64-config
-rwxr-xr-x    2 root root       11336 Jun 11 15:17 python3.6m
-rwxr-xr-x    1 root root         173 Jun 11 15:16 python3.6m-config
-rwxr-xr-x    1 root root        3403 Jun 11 14:54 python3.6m-x86_64-config

这行结果

lrwxrwxrwx    1 root root          15 Oct 21 14:12 python -> /usr/bin/python

告诉我们符号 link python 指向它自己,这给了你 "Too many levels" 错误。

您可以通过

删除link
rm python

或使用

将link重置为python3
ln -fs /usr/bin/python3 /usr/bin/python

(这两个可能都需要 sudo)

yum 安装错误是一个单独的问题,不过

ln -fs /usr/bin/python /usr/bin/python 创建递归符号链接 - 即它指向自身。

yum 似乎是用 Python 2 语法编写的,因此将符号链接还原为:

sudo ln -fs python2 /usr/bin/python

然后想办法使 Python 3 成为默认值,这不会破坏您的包管理器。例如。 an alias

请参阅 PEP 394 以了解将 Python 2 保留为默认值的理由。

P.s。我不熟悉 RHEL,但所有这些都符合我在 Ubuntu.

方面的经验