我们有一台 RHEL 8.10 服务器,Python 包的默认位置在 下/usr/lib/python3.6/site-packages/
。当然,这包括位于 的 DNF 包/usr/lib/python3.6/site-packages/dnf
。
我们安装了新的 Python 版本 (3.8),以下是以下软件包:
ls -ltr /usr/lib/python3.8/site-packages/
total 8
-rw-r--r-- 1 root root 126 Aug 6 2023 easy_install.py
drwxr-xr-x 2 root root 82 Mar 24 17:57 __pycache__
drwxr-xr-x 2 root root 170 Mar 24 17:57 setuptools-41.6.0.dist-info
drwxr-xr-x 5 root root 94 Mar 24 17:57 pkg_resources
drwxr-xr-x 6 root root 4096 Mar 24 17:57 setuptools
drwxr-xr-x 2 root root 130 Mar 24 17:57 pip-19.3.1.dist-info
drwxr-xr-x 5 root root 95 Mar 24 17:57 pip
现在,我们要安装 DNF 包,它应该位于 下/usr/lib/python3.8/site-packages/
。
问题是,当我们尝试使用以下命令安装 DNF 时:
yum localinstall python3-dnf-4.7.0-20.el8.noarch.rpm
它没有安装在路径下/usr/lib/python3.8/site-packages/
。
安装 DNF 包的正确方法是什么/usr/lib/python3.8/site-packages/
?
我也尝试过这个,但没有帮助
PYTHONPATH=/usr/lib/python3.8/site-packages
yum localinstall python3-dnf-4.7.0-20.el8.noarch.rpm
Last metadata expiration check: 0:30:53 ago on Mon 24 Mar 2025 06:35:20 PM UTC.
Package python3-dnf-4.7.0-20.el8.noarch is already installed.
Dependencies resolved.
Nothing to do.
Complete!
你不能,这不是 Python 包(或一般的 RPM 包)的工作方式。RPM
python3-dnf-4.7.0-20.el8
包是用 Python 3.6 构建的,只能与 Python 3.6 一起使用。RPM 包只是一个存档(带有一些元数据),路径不是动态的,而是在构建时确定的,并且在包安装期间不会更改。如果您提取包,您可以看到所有文件的完整路径:
如果要安装 Python 3.8 版本的 DNF,则需要 Python 3.8 版本的 DNF(RHEL 8 中不可用)或从源代码构建一个。但请注意,如果您开始摆弄系统 Python 和 DNF 等系统工具,很容易破坏您的系统。我不确定您的目标是什么,但我强烈建议为此使用虚拟环境。
如果您的目标是在整个系统范围内用 3.8 替换 Python 3.6,并用 Python 3.8 版本替换所有系统包,那么答案是:不要。您需要从头开始重建大部分系统(至少是系统中所有依赖于 Python 的内容),并且在此过程中可能会破坏您的系统。如果您需要整个系统范围内的较新版本的 Python,则需要升级到较新版本的 RHEL(RHEL 9 附带 Python 3.9)。