python3.9から3.10にシンボリックリンクを変更すると、dnfがクラッシュします。

python3.9から3.10にシンボリックリンクを変更すると、dnfがクラッシュします。

私は完全に混乱しています。 dnfはFedora34とPython 3.9.7でうまく動作します。

そのために/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コマンドがdnfを中断せずに3.10を指すようにシステムを更新する方法を説明できますか?

答え1

これを行わないでください:プロジェクトまたは開発で異なるバージョンのPythonを使用するには、バージョン管理コマンドを使用する必要がありますpython3.x仮想環境

DNFなどのシステムツールは、正確なPython ABIバージョンによって異なります。 Fedora 34では、/usr/lib/python3.9/site-packages最新のPythonに再コンパイルしないと、Python 3.10で動作しないPython DNFのPython 3.9バージョンがインストールされました。

$ rpm -q --requires python3-dnf
/usr/bin/python3
...
python(abi) = 3.9

システム全体でPython 3.10が本当に必要な場合は、次のことができます。アップグレードFedora 35はデフォルトでPython 3.10に付属しています。 (Fedora 35はまだリリースされていませんが、テストされているので十分安定しています。)

関連情報