【问题标题】:No module named yum没有名为 yum 的模块
【发布时间】:2018-10-13 04:00:50
【问题描述】:

我尝试了@yum---no module named yum"No module named yum" with Python 2.7 的解决方案,但没有帮助,听起来 yum 模块不是一个普通的 Python 模块,需要针对你的 Python 2.7 安装构建 yum,任何人都可以提供有关如何安装的指导这样做?

机器详情:

[usernames@machine]$ cat /etc/*elease
LSB_VERSION=base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Oracle Linux Server release 6.6
Red Hat Enterprise Linux Server release 6.6 (Santiago)
Oracle Linux Server release 6.6

错误:-

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.12 (default, Aug 11 2016, 12:02:22) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-11)]

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

【问题讨论】:

  • 你升级python2并覆盖你的系统python了吗?
  • 你只是想运行yum吗?
  • @jgritty - 我在我的机器上使用 python 2.7.2,这可能是原因?如何解决这个问题?是的,我正在尝试运行 yum
  • 您正在运行 OEL6。您可以从public-yum.oracle.com 获取最新支持的pythonpython-libs。用这些发行版库替换 python-2.7.2。如果目录/usr/lib/python2.6/site-packages/yum 及其内容被清除,您可能还需要重新安装yum。运行rpm -V yum 将显示是否有任何文件丢失。

标签: python linux redhat yum rhel


【解决方案1】:

看来遭到破坏的是/usr/bin 中的系统Python,它知道在哪里可以找到由RHEL 安装的python 模块和共享对象。所以你需要重新安装 RHEL python rpms,而不仅仅是 yum。

RHEL 的许多实用程序都使用/usr/bin/pythonyum 是一个 Python(包装器)脚本。

看起来您使用的是 RHEL 6。所以 /usr/bin/python 必须是 2.6。这就是 RHEL 6 附带的。 (对于 RHEL 7,它需要是 2.7.5)

因此,要解决问题,您需要从 RHEL rpm 重新安装系统 Python。为了使系统正常工作,/usr/bin/python 不能是 Python 的任意版本。

yum rpm 只会将 yum 文件重新安装到原始路径,但您需要从正确目录加载模块的 RHEL /usr/bin/python。 rpm 不会安装 Python 意义上的模块。此外,还有许多其他模块具有共享库依赖项,例如 DBus 接口。

因此,为您的发行版获取 RHEL python-* rpms。您需要下载它们,或使用 ISO/DVD。 rpm 本身不知道如何通过网络访问软件仓库,这是 yum 的工作,因此您必须手动进行。

或者,如果您有另一个运行相同版本的 RHEL 的系统,您可以将文件复制过来。您可以使用rpm -Va 获取属于已修改的rpm 的所有文件的列表。在正常操作期间有许多文件会被修改。

(讲道理,不要覆盖/usr/bin/python、/usr/bin/python2。RHEL(和其他平台、Fedora等)依赖系统python才能正常工作。)

【讨论】:

    【解决方案2】:

    好吧,假设 rpm 没有损坏 - 你可以这样做:

    第一:

    rpm -q yum
    

    用于检索已安装(但已损坏)的 yum 软件包。例如在我的 Centos7 上,我得到下一个结果:yum-3.4.3-154.el7.centos.1.noarch.rpm

    但这还不是全部。您应该删除.el7noarch 之间的部分。然后就可以进行第二步了

    第二:

    rpm -qpR <yum package name>
    

    或:

    rpm -qR yum
    

    用于获取 yum 依赖项列表。

    最后一个:

    rpm -Uvh <packagenames>
    

    【讨论】:

    • rpm -q yum 命令将输出抛出为 [username@ibot21 ~]$ rpm -q yum yum-3.2.29-60.0.1.el6.noarch ,那么我的第二步和依赖项步骤中的命令是什么?是rpm -qpR yum-3.2.29-60.0.1 吗,请澄清
    • @user2125827 据我所知,第二个命令应该如下:rpm -qpR yum-3.2.29-60.0.1.el6.noarch 因为你已经正确格式化了包名
    • 顺便说一句,我认为您可以尝试第三步进入第二步:rpm -Uvh yum-3.2.29-60.0.1.el6.noarch 即使没有列表要求
    • 运行rpm -Uvh yum-3.2.29-60.0.1.el6.noarch 抛出错误error: open of yum-3.2.29-60.0.1.el6.noarch failed: No such file or directory
    • yum-3.2.29-60.0.1.el6.noarch 在哪里?如何找到它在哪里?
    【解决方案3】:

    显然你替换了 Python 的系统版本。

    不要那样做。在需要时使用 virtualenv、pip 和/或其他工具运行 Python 的自定义版本。

    尝试放回官方发行版 Python 安装。

    【讨论】:

    • 我明白原因,不太清楚如何放回官方发行版python或如何解决这个问题?请提供指导
    • @user2125827 您的第一个链接上的一个答案描述了它。除了不要使用centos 5。使用你的版本。下载 python RPM 并使用 rpm 安装它们。
    • 安装 python-2.6.6-66.el6_8.x86_64.rpm, python-devel-2.6.6-66.el6_8.x86_64.rpm 和 # rpm -Uvh --force 覆盖外星人 "2.7" 。可用的附加功能:EPEL.repo → python34-devel (3.4.5)。 Python 2.7:安装到 `--prefix=/opt/python27,或其他隐藏位置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-28
    • 1970-01-01
    • 2018-07-27
    相关资源
    最近更新 更多