Python: 找不到命令错误

0 投票
1 回答
5132 浏览
提问于 2025-04-18 08:24

有人在红帽服务器上搞错了符号链接,现在我无法使用Python了,我尝试了很多方法。当我尝试运行Python时,系统提示“python: 找不到命令”。

我有以下信息:

alternatives --display python
python - status is auto.
link currently points to /usr/bin/python2.4
/usr/bin/python2.4 - priority 1
Current `best' version is /usr/bin/python2.4.

当我尝试执行 ln -sf /usr/bin/python /usr/bin/python2.4 时,出现了以下问题:

ln: accessing `/usr/bin/python2.4': Too many levels of symbolic links

当我删除 /usr/bin/python 时,也没有帮助。

我还用这些命令检查过:

readlink /usr/bin/python
/etc/alternatives/python

readlink /usr/bin/python2.4
/usr/bin/python

readlink python
/usr/bin/python

看起来一切应该正常。有什么建议吗?

1 个回答

1

我觉得你把 ln 命令搞反了。你出现这个错误的原因是因为你在创建一个指向 python 的链接 python2.4,但实际上 python 本身也是一个指向 python2.4 的链接。你需要把 ln 命令中的源和目标位置调换一下,这样就可以正常工作了。

我自己从来没用过 alternatives,但你可能不应该手动编辑这些符号链接。

编辑

正如我在评论中提到的,你可能覆盖了原来的 python 可执行文件。在我能接触到的一个 RHEL5 系统中,/usr/bin 目录的样子是这样的:

$ ls -l /usr/bin/python*
-rwxr-xr-x 2 root root 8304 Oct 23  2012 /usr/bin/python
lrwxrwxrwx 1 root root    6 Jan 11  2013 /usr/bin/python2 -> python
-rwxr-xr-x 2 root root 8304 Oct 23  2012 /usr/bin/python2.4

如果你查看这两个非符号链接文件的 inode,你会发现它们其实是同一个文件:

$ stat -c %i /usr/bin/python
3290164
$ stat -c %i /usr/bin/python2.4
3290164

所以你需要找到原来的 python 可执行文件,然后我们可以想办法按照原来的方式链接它们。再说一次,我从来没用过 alternatives,所以也许它能做一些移动可执行文件的魔法,但我对此表示怀疑。

撰写回答