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

use*_*886 3 fedora python dnf

我完全困惑了。\非 Fedora34 和 python 3.9.7 dnf 可以正常工作。

\n

为此,我已更改为 /usr/bin 目录。

\n

如果我将符号链接更改为 3.10,如下所示,dnf 就会中断:

\n
\xe2\x9e\x9c  bin ln -s -f python3.10 python3\n\xe2\x9e\x9c  bin dnf\nTraceback (most recent call last):\n  File "/usr/bin/dnf", line 57, in <module>\n    from dnf.cli import main\nModuleNotFoundError: No module named 'dnf'\n
Run Code Online (Sandbox Code Playgroud)\n

然后我把它改回3.9,dnf就可以工作了。

\n
\xe2\x9e\x9c  bin ln -s -f python3.9 python3   \n\xe2\x9e\x9c  bin dnf\nusage: dnf [options] COMMAND\netc...\n
Run Code Online (Sandbox Code Playgroud)\n

有人可以向我解释一下这个问题以及如何更新系统以便让 python3 命令指向 3.10 而不破坏 dnf 吗?

\n

Voj*_*fny 11

不要这样做:如果您想在项目或开发中使用不同版本的 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
Run Code Online (Sandbox Code Playgroud)

如果您确实想要在系统范围内使用 Python 3.10,则可以升级到默认情况下附带 Python 3.10 的 Fedora 35。(Fedora 35 尚未发布,但它已经经过测试,所以应该足够稳定。)