没有模块';百胜餐饮集团;在CentOS 7上的Python 3上

没有模块';百胜餐饮集团;在CentOS 7上的Python 3上,python,python-3.x,centos7,rhel7,Python,Python 3.x,Centos7,Rhel7,我正在尝试使用CentOS 7中的 在python2中:我可以成功地导入yum 在python3中:当我尝试导入yum时,我遇到ModuleNotFoundError:没有名为“yum”的模块 在安装dnf后,同样的问题也会出现 围绕这个问题的研究让我来到了CentOS 8,在那里,dnfpackage可以在Python 3上工作。 在CentOS 7中尝试查找python3 dnf软件包(或用于yum的等效软件包)时。 试图在CentOS 7上安装CentOS 8软件包只会导致与所需软件包的冲

我正在尝试使用CentOS 7中的

python2中:我可以成功地
导入yum

python3中:当我尝试
导入yum
时,我遇到
ModuleNotFoundError:没有名为“yum”的模块

在安装dnf后,同样的问题也会出现

围绕这个问题的研究让我来到了CentOS 8,在那里,
dnf
package可以在Python 3上工作。 在CentOS 7中尝试查找
python3 dnf
软件包(或用于
yum
的等效软件包)时。 试图在CentOS 7上安装CentOS 8软件包只会导致与所需软件包的冲突和不匹配

另外,尝试
pip3安装yum
未找到任何软件包,并且
pip3安装dnf
成功,但导入会发出以下警告:

/usr/local/lib/python3.6/site-packages/dnf.py:15: UserWarning: The DNF Python API is not currently available via PyPI.

Please install it with your distro package manager (typically called
'python2-dnf' or 'python3-dnf'), and ensure that any virtual environments
needing the API are configured to be able to see the system site packages
directory.

  warnings.warn(warning_msg)

因此,目前我无法找到在CentOS 7上运行Python 3的Python代码与
yum
/
dnf
进行本机交互的方法。

我的计算机运行Fedora,我无法访问CentOS安装,但我认为下面的信息是正确的

您使用的
yum
dnf
模块不是日常
pip
模块。相反,它们实际上是
dnf
yum
RPM的一部分

您可以通过以下方式检查:

蟒蛇2

蟒蛇3

如果您检查
yum
dnf
文件,您将看到它们都是
python3
脚本

$ head -1 /usr/bin/yum /usr/bin/dnf
==> /usr/bin/yum <==
#!/usr/bin/python3

==> /usr/bin/dnf <==
#!/usr/bin/python3
$head-1/usr/bin/yum/usr/bin/dnf

==>/usr/bin/yum/usr/bin/dnf感谢您的详细回答,但不幸的是,这并不能解决CentOS 7中的问题。@OrB,我想我的回答实际上是“对不起,您不能”
yum
/
dnf
是作为系统包安装的,因此您必须使用系统提供的功能,而且显然在CentOS上它只提供Python2接口。为什么特别需要Python 3绑定?你想完成什么?还有,你愿意在多大程度上破解它才能通过?例如,您可以根据适当的要求制作一个
virtualenv
,并将python3dnf包中的文件添加到其中。但是你想去那里吗?我特别想要Python3绑定,因为Python2将在15天后退役。你说的似乎是对的,这根本不可能,所以现在我将通过为Python 2编写代码来解决这一问题:(@caxcaxcoatl我需要Python 3,因为Ansible在Python 2上使用时,在具有大量文件指针的系统上运行速度非常慢。但是我不能将Python 3与Ansible一起使用,在我的CentOS 7系统上用Yum而不是Dnf安装软件包。这是一个相当大的难题。@Gherman,好的,这是有意义的。我只是想再次检查一下您是否尝试过Python 3+Ansible+
模块。我不确定Ansible是否使用libs或命令调用,因此可能值得一试,因为您只提到
yum
模块。同样,如果这不起作用,这对DevOps来说是一个有效的问题
>>> import dnf
>>> help(dnf)
(...)
FILE
    /usr/lib/python3.7/site-packages/dnf/__init__.py

$ dnf -C repoquery --file     /usr/lib/python3.7/site-packages/dnf/__init__.py
python3-dnf-0:4.0.4-1.fc29.noarch
python3-dnf-0:4.2.5-5.fc29.noarch
$ head -1 /usr/bin/yum /usr/bin/dnf
==> /usr/bin/yum <==
#!/usr/bin/python3

==> /usr/bin/dnf <==
#!/usr/bin/python3