“yum update”后没有名为 yum 的模块

drf*_*nce 3 python yum amazon-ec2 redhat-enterprise-linux

亚马逊 EC2 Linux AMI
Python 2.7.5
yum 3.4.3

我最近做了一个“yum update”,我猜这会导致我的问题。百胜现在这样做:

# yum
There was a problem importing one of the Python modules
required to run yum. The error leading to this problem was:

   No module named yum

Please install a package which provides this module, or
verify that the module is installed correctly.

It's possible that the above module doesn't match the
current version of Python, which is:
2.7.5 (default, Sep  3 2013, 23:16:48) 
[GCC 4.6.3 20120306 (Red Hat 4.6.3-2)]

If you cannot solve this problem yourself, please go to 
the yum faq at:
  http://yum.baseurl.org/wiki/Faq
Run Code Online (Sandbox Code Playgroud)

查看了 yum 常见问题解答并且对搞乱 yum rpms 并把事情搞得一团糟并不是很舒服。

用谷歌搜索了一下,发现 python 2.6 有正确的站点包,而 2.7.5 没有:

# rpm -ql python | grep "site-packages$"
# rpm -ql yum | grep "site-packages/yum$"
/usr/lib/python2.6/site-packages/yum
Run Code Online (Sandbox Code Playgroud)

如果我尝试强制 yum 使用 2.6,我现在会收到此错误:

# yum --version
3.4.3
CRITICAL:yum.cli:Config Error: Error accessing file for config file:///etc/yum/yum.conf
Run Code Online (Sandbox Code Playgroud)

不知道如何重新启动并运行...

小智 6

在centos中,这个问题的发生主要是由于在同一台机器上安装了2个版本的python.. Centos默认使用python 2.6和yum,而当前安装并使用了另一个版本的python系统默认..这就是为什么它给出以下消息

上述模块可能与当前版本的 Python 不匹配,即:2.7.5(默认,2013 年 9 月 3 日,23:16:48)

要解决此问题,您必须链接python到 yum 所依赖的 2.6 版才能正常工作:

首先删除python

$ rm /usr/bin/python
Run Code Online (Sandbox Code Playgroud)

将 python 与正确的版本 2.6 链接

$ ln -s /usr/bin/python2.6 /usr/bin/python
Run Code Online (Sandbox Code Playgroud)

这是一篇很好的文章,描述了如何在同一台机器上安装不同版本的python。