Red Hat 4.4中Yum报“cannot import name Errors”错误求助
碰到这种情况太闹心了,我之前帮好几个朋友解决过类似的问题——Red Hat的yum和Python 2.6绑定得很紧,升级Python 2.7很容易把它搞崩。咱们一步步来排查修复:
1. 检查yum脚本的Python指定路径
yum本质是个Python脚本,它的第一行shebang决定了用哪个版本的Python运行。很多时候升级Python后,这个路径被改成了默认的python(指向2.7),导致yum无法正常加载依赖模块。
执行命令查看:
cat /usr/bin/yum | head -1
如果输出是#!/usr/bin/python,而你的系统默认python已经指向2.7,那直接修改这一行,强制指定用Python2.6:
sed -i 's/#!\/usr\/bin\/python/#!\/usr\/bin\/python2.6/' /usr/bin/yum
2. 清理可能干扰的Python环境变量
即使切回了Python2.6,PYTHONPATH环境变量可能还指向Python2.7的模块目录,导致yum加载模块时找错路径。
先临时清理变量测试:
unset PYTHONPATH yum update
如果yum能正常运行了,就需要永久移除这个干扰变量:编辑~/.bashrc或者/etc/profile,找到设置PYTHONPATH的行,把它注释掉或者删除,然后执行source ~/.bashrc生效。
3. 重新安装yum及依赖的Python模块
升级Python过程中可能不小心损坏了yum依赖的Python模块,这时候需要用rpm命令重新安装(因为yum暂时用不了):
- 先列出所有yum相关的包:
rpm -qa | grep yum
- 从Red Hat安装介质或官方镜像找到对应的rpm包(比如
yum-*.rpm、python-iniparse-*.rpm、python-urlgrabber-*.rpm),然后强制重新安装:
rpm -ivh --force yum-*.rpm python-iniparse-*.rpm python-urlgrabber-*.rpm
4. 验证Python2.6的完整性
升级Python2.7可能误删或损坏了Python2.6的核心文件,执行以下命令检查:
rpm -V python-2.6.6-*.el6.x86_64 # 替换成你系统里Python2.6的实际包名
如果输出中有文件损坏或缺失的标记,就重新安装Python2.6的rpm包:
rpm -ivh --force python-2.6.6-*.el6.x86_64.rpm
5. 后续避免踩坑的建议
如果需要使用Python2.7,不要修改系统默认的/usr/bin/python软链接,而是:
- 直接用
python2.7命令运行你的脚本 - 用virtualenv创建独立的Python2.7虚拟环境,隔离系统Python环境
这样就不会再影响yum和其他依赖系统Python2.6的工具了。
内容的提问来源于stack exchange,提问作者Resalith

