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

Posted

技术标签:

【中文标题】如何修复 -- bash: /usr/bin/python: 符号链接的级别太多【英文标题】:How to fix -- bash: /usr/bin/python: Too many levels of symbolic links 【发布时间】:2020-02-17 21:11:03 【问题描述】:

我想让 python3 成为我在 rhel 上的默认设置,所以我在 How to set Python3.5.2 as default Python version on CentOS? 上关注了以下内容

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 蟒蛇

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

【问题讨论】:

ls -l /usr/bin | grep python 显示什么? 一堆!我将结果放在问题的底部@LampToast ln -fs /usr/bin/python /usr/bin/python 使/usr/bin/python 成为自身的符号链接,从而创建符号链接的无限循环。相反,您应该将 /usr/bin/python 设置为指向其他其中一个的符号链接。 【参考方案1】:

这行结果

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

告诉我们符号链接 python 指向它自己,这会给您“太多级别”错误。

您可以通过以下方式删除链接

rm python

或使用重置到 python3 的链接

ln -fs /usr/bin/python3 /usr/bin/python

(可能这两个都需要 sudo)

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

【讨论】:

感谢您花时间解释这一点。返回 python3 python -V Python 3.6.8【参考方案2】:

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 保持为默认设置的理由。

附:我对 RHEL 不熟悉,但这一切都符合我在 Ubuntu 上的经验。

【讨论】:

以上是关于如何修复 -- bash: /usr/bin/python: 符号链接的级别太多的主要内容,如果未能解决你的问题,请参考以下文章

安装Virtualenv创建独立环境

怎么设置anaconda为python默认解释器

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

python2.6升级2.7

如何修复 git bash 错误异常:STATUS_ACCESS_VIOLATION

cinder api启动过程源码分析