我完全困惑了。在 Fedora34 和 python 3.9.7 上 dnf 可以正常工作。
为此,我已更改为 /usr/bin 目录。
如果我将符号链接更改为 3.10,如下所示,dnf 就会中断:
➜ bin ln -s -f python3.10 python3
➜ bin dnf
Traceback (most recent call last):
File "/usr/bin/dnf", line 57, in <module>
from dnf.cli import main
ModuleNotFoundError: No module named 'dnf'
然后我把它改回3.9,dnf就可以工作了。
➜ bin ln -s -f python3.9 python3
➜ bin dnf
usage: dnf [options] COMMAND
etc...
有人可以向我解释一下这个问题以及如何更新系统以便让 python3 命令指向 3.10 而不破坏 dnf 吗?
答案1
不要这样做:如果您想在项目或开发中使用不同版本的 Python,您需要使用版本化命令python3.x
或虚拟环境。
DNF 等系统工具依赖于确切的 Python ABI 版本。在 Fedora 34 上,您安装了 Python 3.9 版本的 Python DNF /usr/lib/python3.9/site-packages
,如果不使用较新的 Python 重新编译,它将无法与 Python 3.10 一起使用:
$ rpm -q --requires python3-dnf
/usr/bin/python3
...
python(abi) = 3.9
如果你真的想要 Python 3.10 系统范围内,你可以升级Fedora 35 默认附带 Python 3.10。 (Fedora 35 尚未发布,但它已经经过测试,所以应该足够稳定。)