安装完新的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 yumPlease 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
幸好对之前的解释器做了备份,那么我们就把yum文件中的配置指向这个备份的就行
如果您有程序依赖于新安装的 Python 版本,并且您不希望改变 /usr/bin/python
的链接,那么您可以考虑修改 yum
脚本来指向系统原始的 Python 解释器。
这样,您的程序仍然可以使用新的 Python 版本,而 yum
将使用系统原始的 Python 解释器。
-
修改
yum
脚本:使用您喜欢的文本编辑器打开
/usr/bin/yum
,例如使用vi
:vi /usr/bin/yum
更改第一行,将
#!/usr/bin/python
替换为系统原始的 Python 解释器的路径,如下:#!/usr/bin/python2.7.bak
保存并退出编辑器。
-
测试
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 版本需求。