情况
我们在公司的集群环境想要使用yum命令进行安装一些组件,报错No module named 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.11 (default,Jun 14 2016,14:13:45)
[GCC 4.8.4]
If you cannot solve this problem yourself,please go to
the yum faq at:
http://yum.baseurl.org/wiki/Faq
如图:
原因
yum基于python写的,根据报错信息提示,是yum的python版本对应不上目前python环境的版本导致的。
也就是说 有人升级或者卸载了python。
解决方式
查看yum版本
rpm -qa |grep yum
查看python版本
whereis python
输出为
[zzq@host252 thrift-0.11.0]$ whereis python
python: /usr/src/Python-2.7.11/python /usr/bin/python2.6 /usr/bin/python /usr/bin/python2.6-config /usr/lib/python2.6 /usr/lib64/python2.6 /usr/local/bin/python2.7-config /usr/local/bin/python /usr/local/bin/python2.7 /usr/local/lib/python2.7 /usr/include/python2.6 /usr/share/man/man1/python.1.gz
发现果然安装了两个版本2.6和2.7版本。
查看python版本
whereis python
输出为
[zzq@host252 thrift-0.11.0]$ python
Python 2.7.11 (default,14:13:45)
[GCC 4.8.4] on linux2
Type "help","copyright","credits" or "license" for more information.
which yum
输出为/usr/bin/yum
vi /usr/bin/yum
如图
点击i键进入编辑模式
将通用的引用修改成指定的引用,引用回旧版本的,我们这里旧版本是whereis python输出的2.6。
#!/usr/bin/python
改为:
#!/usr/bin/python2.6
点击esc输入:wq保存退出。
如果报错
File “/usr/sbin/yum-updatesd”,line 35,in
import dbus
ImportError: No module named dbus
则需要找到yum-updatest文件进行一样的修改,使用命令
which yum-updatest
vi /usr/bin/yum-updatest
有些版本找不到yum-updatest则不需要修改。