我的计算机运行Fedora,但是我无法访问CentOS安装,但是我认为下面的信息是正确的。
我正在尝试在CentOS 7中使用yum Python package。>
在Python 2]中:我可以成功import yum
。
在Python 3]中:当我尝试import yum
时,遇到ModuleNotFoundError: No module named 'yum'
。
安装dnf后,dnf Python package发生完全相同的问题。
研究此问题后,我进入了CentOS 8,其中dnf
软件包确实适用于Python 3。尝试在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)
[因此,目前我无法找到一种方法,可以在CentOS 7上运行Python 3与Python代码与
yum
/dnf
进行本地交互。我正在尝试在CentOS 7中使用yum Python软件包。在Python 2中:我可以成功导入yum。在Python 3中:当我尝试导入yum时,遇到ModuleNotFoundError:没有名为“ yum”的模块。 ...
我的计算机运行Fedora,但是我无法访问CentOS安装,但是我认为下面的信息是正确的。
您正在使用的yum
和dnf
模块不是您日常的pip
模块。相反,它们实际上是dnf
和yum
rpm的一部分。
您可以这样检查:
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.noarch
Python3
>>> 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
模块的调用。因此,Python的
yum
或dnf
模块的可用性将取决于您安装的实际命令的版本。对于
dnf
,您可以尝试安装python2-dnf
或python3-dnf
。不过,我不确定您是否可以同时拥有它们。我想您可以,因为它们在/usr/bin
中具有不同的名称。
对于yum
,我猜测他们提供了Python 2库以实现向后兼容,但是考虑到dnf
已将其淘汰,因此他们可能并没有费心将其移至Python 3。
同样,对于我的Fedora版本,这都是正确的。您的CentOS版本可能会得到不同的结果和软件包名称,但底线应该相同:Python2 lib仅用于yum
;为不同的Python版本模块安装不同的dnf
软件包。
我的计算机运行Fedora,但是我无法访问CentOS安装,但是我认为下面的信息是正确的。