centos7上使用yum遇到no module named yum的解决方法

最近在自己的一台开发机器上需要用到yum,但是遇到了no module name yum的报错,在网上查了大量资料,很长时间都没有解决,十分苦恼。

本质上,yum是用python实现的,如果/usr/bin/yum中配的python地址不能正确import yum的话就会导致上述问题。

网上一般的解决办法是说python版本升级导致了这个问题,只要通过whereis python命令找到yum支持的原有的python版本,2.6也好,2.4也好不同机器不一样,然后修改/usr/bin/yum中关于python的配置即可。但是情况往往没有这么简单,我的机器可能早就没有可支持yum的python的版本了,我尝试了重新安装可能支持的python版本,但是徒劳。如果可以通过前面简单的配置解决的话,可以随便找到一个详细的教程,不在此文讨论范围。

最后干脆直接重新安装python和yum,推倒重来也许是最有效的方法。但是首先需要卸载和删除本机所有的python和yum,注意包括anaconda之类的也要卸载,因为如果不卸载后续可能出现类似rpm: /root/workspace/cxy/anaconda2/lib/liblzma.so.5: version `XZ_5.1.2alpha' not found (required by /lib64/librpmio.so.3)这样的问题。

删除现有的python

rpm -qa|grep python|xargs rpm -ev --allmatches --nodeps ##强制删除已安装程序及其关联

whereis python |xargs rm -frv -rf ##删除所有残余文件 ##xargs,允许你对输出执行其他某些命令

 whereis python ##验证删除,返回无结果

删除现有的yum

rpm -qa|grep yum|xargs rpm -ev --allmatches --nodeps

whereis yum |xargs rm -frv -rf

下载所需的RPM包

下载地址如下:http://mirrors.163.com/centos/7/os/x86_64/Packages/

这里的包的版本可能会更新,我只列出我下载的时候所需的版本,直接wget相应的包链接即可

python-2.7.5-76.el7.x86_64.rpm

python-chardet-2.2.1-1.el7_1.noarch.rpm

python-devel-2.7.5-76.el7.x86_64.rpm

python-iniparse-0.4-9.el7.noarch.rpm

python-kitchen-1.1.1-5.el7.noarch.rpm

python-libs-2.7.5-76.el7.x86_64.rpm

python-pycurl-7.19.0-19.el7.x86_64.rpm

python-setuptools-0.9.8-7.el7.noarch.rpm

python-urlgrabber-3.10-9.el7.noarch.rpm

yum-3.4.3-161.el7.centos.noarch.rpm

yum-metadata-parser-1.1.4-10.el7.x86_64.rpm

yum-plugin-aliases-1.1.31-50.el7.noarch.rpm

yum-plugin-fastestmirror-1.1.31-50.el7.noarch.rpm

yum-plugin-protectbase-1.1.31-50.el7.noarch.rpm

yum-utils-1.1.31-50.el7.noarch.rpm

修改文件名

mv python-setuptools-0.9.8-7.el7.noarch.rpm python-setuptools-0.9.8-7.el7.noarch

mv yum-utils-1.1.31-50.el7.noarch.rpm yum-utils-1.1.31-50.el7.noarch

mv yum-plugin-aliases-1.1.31-50.el7.noarch.rpm yum-plugin-aliases-1.1.31-50.el7.noarch

安装

rpm -Uvh --replacepkgs python*.rpm

rpm -Uvh --replacepkgs rpm-python*.rpm yum*.rpm

 

可能会遇到如下问题:

libcrypto.so.10(OPENSSL_1.0.2)(64bit) is needed by python-libs-2.7.5-76.el7.x86_64

这个就需要更新openssl

首先通过rpm -qa | grep openssl查看版本:

openssl-1.0.1e-42.el7.9.x86_64
openssl098e-0.9.8e-29.el7.centos.2.x86_64
openssl-libs-1.0.1e-42.el7.9.x86_64

然后通过下面命令:

rpm -q --provides openssl-libs | grep libcrypto.so.10
libcrypto.so.10()(64bit)
libcrypto.so.10(OPENSSL_1.0.1)(64bit)
libcrypto.so.10(OPENSSL_1.0.1_EC)(64bit)
libcrypto.so.10(libcrypto.so.10)(64bit)

接着从刚才下载包的网站下载:

openssl-1.0.2k-16.el7.x86_64.rpm

openssl-libs-1.0.2k-16.el7.x86_64.rpm

并安装:rpm -Uvh --replacepkgs openssl-*.rpm

此时rpm -q --provides openssl-libs | grep libcrypto.so.10
libcrypto.so.10()(64bit)
libcrypto.so.10(OPENSSL_1.0.1)(64bit)
libcrypto.so.10(OPENSSL_1.0.1_EC)(64bit)
libcrypto.so.10(OPENSSL_1.0.2)(64bit)
libcrypto.so.10(libcrypto.so.10)(64bit)

 

如果遇到rpm >= 0:4.11.3-22 is needed by yum-3.4.3-161.el7.centos.noarch

则是rpm的版本过老,需要更新RPM,下载的包如下:

rpm-4.11.3-35.el7.x86_64.rpm

rpm-build-4.11.3-35.el7.x86_64.rpm

rpm-build-libs-4.11.3-35.el7.x86_64.rpm

rpm-libs-4.11.3-35.el7.x86_64.rpm

rpm-python-4.11.3-35.el7.x86_64.rpm

rpm-sign-4.11.3-35.el7.x86_64.rpm

安装更新:rpm -Uvh --replacepkgs rpm*.rpm

最后再尝试:rpm -Uvh --replacepkgs rpm-python*.rpm yum*.rpm

 

最终在python交互界面测试import yum,如果成功即大功告成。

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值