《排错》Python重新安装后,执行yum命令报错

安装完新的python以后,发现yum命令没法用

以下是报错信息:

[root@master ~]# 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, Apr  2 2020, 13:16:51) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)]

If you cannot solve this problem yourself, please go to 
the yum faq at:
  http://yum.baseurl.org/wiki/Faq

问题原因:默认 Python 解释器已被修改,指向了一个可能不包含 yum 模块的版本。

cd /usr/bin
ll |grep python

《排错》Python重新安装后,执行yum命令报错_第1张图片

幸好对之前的解释器做了备份,那么我们就把yum文件中的配置指向这个备份的就行

如果您有程序依赖于新安装的 Python 版本,并且您不希望改变 /usr/bin/python 的链接,那么您可以考虑修改 yum 脚本来指向系统原始的 Python 解释器。

这样,您的程序仍然可以使用新的 Python 版本,而 yum 将使用系统原始的 Python 解释器。

  1. 修改 yum 脚本:

    使用您喜欢的文本编辑器打开 /usr/bin/yum,例如使用 vi:

    vi /usr/bin/yum
    

    更改第一行,将 #!/usr/bin/python 替换为系统原始的 Python 解释器的路径,如下:

    #!/usr/bin/python2.7.bak
    

    保存并退出编辑器。

  2. 测试 yum:

    现在,尝试运行 yum 命令看是否正常工作。

这种方法的好处是它不会影响到依赖于新 Python 版本的其他程序。但是,您应该注意任何系统更新或其他可能覆盖 yum 脚本的操作,因为这可能需要您重新应用此修改。

长期来看,可能考虑配置程序使用虚拟环境 (virtualenv) 或 Docker 容器,这样可以避免全局 Python 版本和系统工具之间的冲突。

问题:python2.7.bak都已经没有链接了还能用?

**回答:**对不起,我明白了您的担忧。您正确地指出了 .bak 文件实际上是一个备份的二进制文件,而不是一个符号链接。

如果 python2.7.bak 是原始的 Python 2.7.5 二进制文件,并且它是完整的和工作的,那么它应该可以被用作 Python 解释器。但首先,我们可以简单地验证它是否仍然是一个有效的 Python 解释器:

/usr/bin/python2.7.bak --version
/usr/bin/python2.7.bak -c "import sys; print(sys.version)"

如果上述命令输出了预期的 Python 版本且没有报错,那么您可以按前面的建议修改 /usr/bin/yum 脚本的 shebang 行为 #!/usr/bin/python2.7.bak

但是,为了系统的稳定性,这仍然只是一个暂时的解决方案。最终,您可能希望将系统恢复到一个更正常的状态,其中 /usr/bin/python/usr/bin/python2.7 指向系统的默认 Python 解释器,并通过其他方法(如 virtualenv 或容器化)来处理特定应用程序的特定 Python 版本需求。

你可能感兴趣的:(Linux系统运维,Python,1024程序员节)