【问题标题】:"No module named yum" centos7“没有名为 yum 的模块”centos7
【发布时间】:2018-08-15 08:24:25
【问题描述】:

我的操作系统是 CentOS Linux 7.4.1708 版

首先,我为python安装anaconda。然后我替换/usr/bin/python中的默认python。

$ ll /usr/bin/python*
lrwxrwxrwx. 1 root root  7 Aug 15 03:40 /usr/bin/python -> python2
lrwxrwxrwx. 1 root root  9 Aug  9 22:10 /usr/bin/python3 -> python3.6
lrwxrwxrwx. 1 root root 29 Aug  9 22:10 /usr/bin/python2.7 -> /root/anaconda2/bin/python2.7
lrwxrwxrwx. 1 root root 29 Aug  9 21:59 /usr/bin/python3.6 -> /root/anaconda3/bin/python3.6
lrwxrwxrwx. 1 root root  9 Aug  8 23:49 /usr/bin/python2 -> python2.7


Python 2.7.15 |Anaconda, Inc.| (default, May  1 2018, 23:32:55)
[GCC 7.2.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

所以我不能再使用yum了。

$ 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.15 |Anaconda, Inc.| (default, May  1 2018, 23:32:55)
[GCC 7.2.0]

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

我正在尝试将vi /usr/bin/yum 的第一行修复为任何其他python 路径。 但它不起作用。

另外,我正在尝试像这样重新安装 python*.rpm:

rpm -ivh python-tools-2.7.5-68.el7.x86_64.rpm python-2.7.5-68.el7.x86_64.rpm python-libs-2.7.5-68.el7.x86_64.rpm tkinter-2.7.5-68.el7.x86_64.rpm

然后重新安装yum*.rpm(我今天下载了很多*.rpm...) 但是,仍然无法正常工作。 有人帮我一把吗?谢谢!

【问题讨论】:

标签: python yum


【解决方案1】:

我最近在CentOS7上用Yum3.4.3,Python2.7.5遇到了这个问题,

[root@centos64b build]# yum list 导入有问题 运行 yum 所需的 Python 模块之一。导致的错误 这个问题是:

没有名为 yum 的模块

请安装提供此模块的软件包,或验证 模块安装正确。

上述模块可能与当前版本不匹配 Python的,即: 2.7.5(默认,2018 年 4 月 11 日,07:36:10)[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)]

如果您无法自行解决此问题,请前往 yum 常见问题解答 在:http://yum.baseurl.org/wiki/Faq

虽然我在遇到这个问题之前没有更新 Python。最后发现sys.path中没有设置python site-packages libpath,所以这里的解决方法是在/usr/bin/yum Python脚本中将site-package libpath追加到sys.path。然后 yum 工作正常。

[build@centos64b ~]$ more /usr/bin/yum
#!/usr/bin/python
import sys
sys.path.append('/usr/lib/python2.7/site-packages')
sys.path.append('/usr/lib64/python2.7/site-packages')

【讨论】:

  • 谢谢!你让我今天一整天都感觉很好!我还将这些行添加到/usr/libexec/urlgrabber-ext-down
【解决方案2】:

我在 Superuser StackExchange

上找到了两个解决方案

解决方案 1

  • ln -s /etc/yum.conf /etc/yum/yum.conf

解决方案 2

删除新安装的python

  • rm /usr/bin/python

将 python 链接到正确的版本 (x.y)

  • ln -s /usr/bin/pythonx.y /usr/bin/python

【讨论】:

  • 但是我找不到旧的python,所有的/usr/bin/python*都是我安装的,默认的pythonx.y被删除了。
  • 无论存在哪个版本,尝试使用 ln 命令链接它。 & 还要修复 yum,你需要编辑 /etc/yum/yum.conf
  • 如何链接?请帮帮我,我的 python2.6 是 /usr/local/bin/python 我的 python2.7 是 /usr/bin/python ,但默认的 python 是 python2.6。而且,我不知道如何修复 yum 内容在这里。 vi /etc/yum/yum.conf [main] cachedir=/var/cache/yum/$basearch/$releasever keepcache=0 debuglevel=2 logfile=/var/log/yum.log exactarch=1 obsoletes=1 gpgcheck=1 plugins=1 installonly_limit=5 bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum distroverpkg=centos-release
  • 您是否看到以下命令的输出 ls -l /usr/bin pyth*ls -l /usr/local/bin pyth*
  • 很可能,以下两个命令应该可以解决您的问题,`rm /usr/bin/python; ln -s /usr/local/bin/python /usr/bin/python`
【解决方案3】:

重新安装python
rpm -ivh --force python-2.7.5-68.el7.x86_64.rpm

为什么有效。通常 rpm 可以容忍其他软件包的文件。在您的情况下,它发现它没有创建链接文件,因此它在安装时跳过了它们。来自man rpm 我们可以找到

--force
    Same as using --replacepkgs, --replacefiles, and --oldpackage. 
--replacefiles
    Install the packages even if they replace files from other, already installed, packages. 

使用这些选项rpm 不关心旧文件是由其他人创建的事实。

附:一些提示:永远不要删除/usr/bin 中的更改文件。 /bin 是您链接的更好地方。最好将您的 bin 目录添加到 $PATH,方法是在您的 .bash_profile 中添加类似这样的内容:

$PATH=/root/anaconda2/bin/python2.7:$PATH

因此,如果出现问题,只需从.bash_profile 中删除该行即可。 再说一遍:始终进行备份,尤其是在处理系统文件时。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-13
    • 2018-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-28
    • 1970-01-01
    • 2018-07-27
    相关资源
    最近更新 更多