我正在尝试在yum Python包 7中使用CentOS。
在Python2中,:我可以成功地使用import yum。
在Python3中:当我尝试import yum时,我会遇到ModuleNotFoundError: No module named 'yum'。
在我安装dnf之后,dnf Python包也会出现同样的问题。
围绕这个问题进行的研究将我带到了CentOS 8,在那里,dnf包确实在Python3上工作。当试图在CentOS 7中查找python3-dnf包(或与yum等效的软件包)时,试图在CentOS 7上安装CentOS 8软件包只会导致与所需软件包的冲突和不匹配。
此外,尝试pip3 install yum没有找到任何包,pip3 install 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)因此,目前我无法找到一种在yum 7上运行Python3的本地与dnf/ CentOS代码交互的方法。
发布于 2019-12-12 03:35:20
我的计算机运行Fedora,我无法访问CentOS安装,但我认为下面的信息是正确的。
您使用的yum和dnf模块不是您日常使用的pip模块。相反,它们实际上是dnf和yum rpms的一部分。
你可以这样检查:
Python2
>>> import yum
>>> help(yum)
(...)
FILE
/usr/lib/python2.7/site-packages/yum/__init__.py
$ dnf -C repoquery --file /usr/lib/python2.7/site-packages/yum/__init__.py
yum-0:3.4.3-518.fc29.noarchPython3
>>> 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如果您检查yum和dnf文件,您会发现它们都是python3脚本
$ head -1 /usr/bin/yum /usr/bin/dnf
==> /usr/bin/yum <==
#!/usr/bin/python3
==> /usr/bin/dnf <==
#!/usr/bin/python3如果详细查看yum,您将看到它实际上是对dnf模块的调用。
因此,yum或dnf模块的可用性将取决于实际安装的命令的版本。
对于dnf,您可以尝试安装python2-dnf或python3-dnf。不过,我不确定你能不能同时拥有它们。我想你可以,因为他们在/usr/bin中有不同的名字。
对于yum,我猜他们提供Python2库是为了向后兼容,但考虑到dnf已经过时了,他们可能不会费心将它迁移到Python3。
同样,对于我的Fedora版本来说,这也是正确的。您的CentOS版本可能会得到不同的结果和包名,但是底线应该是相同的: Python2库只用于yum;为不同的yum版本模块安装不同的dnf包。
https://stackoverflow.com/questions/59252969
复制相似问题