将符号链接从 python3.9 更改为 3.10 时 dnf 中断

将符号链接从 python3.9 更改为 3.10 时 dnf 中断

我完全困惑了。在 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 尚未发布,但它已经经过测试,所以应该足够稳定。)

相关内容