RHEL9環境ではどのバージョンのPythonを使うべきなのか

どうも、Tです。

個人的にPtyhonを使うことがなかったので知らなかったのですが、RHELでPython環境がなかなかカオスになっていたので調べたことについて備忘録です。

環境

手持ちの環境のためOracle Linux 9.6で確認しています。RHEL互換なので問題ないかなと。

Oracle Linux 9.6(6.12.0-1.23.3.2.el9uek.x86_64)

そもそもどのバージョンが使える?

RHEL9.4以降では、Pyhon3.9、3.11、3.12の3つが使えるようです。

第2章 Python のインストールおよび使用 | 動的プログラミング言語のインストールおよび使用 | Red Hat Enterprise Linux | 9 | Red Hat Documentation
第2章 Python のインストールおよび使用 | 動的プログラミング言語のインストールおよび使用 | Red Hat Enterprise Linux | 9 | Red Hat Documentation

確かに使えるようになっていました。Python3.9はデフォルトでインストール済みでした。

# dnf list available | grep -E ^python3\\.[1-9][0-9]?\\.
python3.11.src                                                                           3.11.11-2.el9_6.1                                   ol9_appstream     
python3.11.x86_64                                                                        3.11.11-2.el9_6.1                                   ol9_appstream     
python3.12.src                                                                           3.12.9-1.el9_6.1                                    ol9_appstream     
python3.12.x86_64                                                                        3.12.9-1.el9_6.1                                    ol9_appstream     
python3.9.src

# python --version
Python 3.9.21                                                                            3.9.21-2.el9_6.1                                    ol9_baseos_latest 

それぞれサポート期間が異なります。

Platform-Pythonとは

この3つから選べばいいのかなと思いましたが、注意事項がありました。

RHEL8からシステムツールが利用するためのPlatform-Pythonという考え方があるようです。

https://developers.redhat.com/blog/2018/11/14/python-in-rhel-8-3#third_party_packages

RHEL9環境では、デフォルトでインストールされているPython3.9がPlatform-Pythonになります。

 # ls -lha /usr/libexec/platform-python
lrwxrwxrwx. 1 root root 18 3月 9 02:56 /usr/libexec/platform-python -> /usr/bin/python3.9

また、RHEL8ではPlatform-Pythonを直接使用しないよう注意事項がありました。

第18章 動的プログラミング言語のインストールおよび使用 | 基本的なシステム設定 | Red Hat Enterprise Linux | 8 | Red Hat Documentation
第18章 動的プログラミング言語のインストールおよび使用 | 基本的なシステム設定 | Red Hat Enterprise Linux | 8 | Red Hat Documentation

RHEL9では該当の章が存在せず、Platform-Pythonを利用することの警告などもなさそうでした。Platform-PythonであるPython3.9自体のの削除やライブラリ回りの変更を伴う大きな変更でなければ、利用しても問題ないように見受けられます。

Pythonをインストールしてみる

デフォルトでインストールされているPlatform-Pythonはシステム用途だけで、利用者側から触らない方がよいそうなので、別バージョンのPythonをインストールしてみます。

デフォルトの状態ではpythonコマンドは下記のようになっています。

 # ls -lha /usr/bin/python*
lrwxrwxrwx. 1 root root 9 3月 9 02:56 /usr/bin/python -> ./python3
lrwxrwxrwx. 1 root root 9 3月 9 02:56 /usr/bin/python3 -> python3.9
-rwxr-xr-x. 1 root root 16K 3月 9 02:56 /usr/bin/python3.9

Python3.11をインストールしてみる

Python3.11をインストールします。

# dnf install python3.11
メタデータの期限切れの最終確認: 1:41:58 前の 2025年07月17日 18時49分23秒 に実施しました。
依存関係が解決しました。
============================================================================================================================================================================
 パッケージ                                         アーキテクチャー              バージョン                                 リポジトリー                             サイズ
============================================================================================================================================================================
インストール:
 python3.11                                         x86_64                        3.11.11-2.el9_6.1                          ol9_appstream                             29 k
依存関係のインストール:
 libnsl2                                            x86_64                        2.0.0-1.el9                                ol9_appstream                             30 k
 libtirpc                                           x86_64                        1.3.3-9.el9                                ol9_baseos_latest                        100 k
 mpdecimal                                          x86_64                        2.5.1-3.el9                                ol9_appstream                             85 k
 python3.11-libs                                    x86_64                        3.11.11-2.el9_6.1                          ol9_appstream                             12 M
 python3.11-pip-wheel                               noarch                        22.3.1-5.el9                               ol9_appstream                            1.4 M
 python3.11-setuptools-wheel                        noarch                        65.5.1-3.el9                               ol9_appstream                            713 k

トランザクションの概要
============================================================================================================================================================================
インストール  7 パッケージ

ダウンロードサイズの合計: 14 M
インストール後のサイズ: 48 M

python3.11コマンドが増えました。

# ls -lha /usr/bin/python*
lrwxrwxrwx. 1 root root   9  3月  9 02:56 /usr/bin/python -> ./python3
lrwxrwxrwx. 1 root root   9  3月  9 02:56 /usr/bin/python3 -> python3.9
-rwxr-xr-x  1 root root 16K  7月  2 19:10 /usr/bin/python3.11
-rwxr-xr-x. 1 root root 16K  3月  9 02:56 /usr/bin/python3.9

正常に実行できます。

# python3.11 --version
Python 3.11.11

Python3.12をインストールしてみる

Python3.12をインストールします。

# dnf install python3.12
メタデータの期限切れの最終確認: 1:43:42 前の 2025年07月17日 18時49分23秒 に実施しました。
依存関係が解決しました。
============================================================================================================================================================================
 パッケージ                                     アーキテクチャー                 バージョン                                   リポジトリー                            サイズ
============================================================================================================================================================================
インストール:
 python3.12                                     x86_64                           3.12.9-1.el9_6.1                             ol9_appstream                            31 k
依存関係のインストール:
 python3.12-libs                                x86_64                           3.12.9-1.el9_6.1                             ol9_appstream                            11 M
 python3.12-pip-wheel                           noarch                           23.2.1-4.el9                                 ol9_appstream                           1.5 M

トランザクションの概要
============================================================================================================================================================================
インストール  3 パッケージ

ダウンロードサイズの合計: 13 M
インストール後のサイズ: 44 M

python3.12コマンドが増えました。

# ls -lha /usr/bin/python*
lrwxrwxrwx. 1 root root   9  3月  9 02:56 /usr/bin/python -> ./python3
lrwxrwxrwx. 1 root root   9  3月  9 02:56 /usr/bin/python3 -> python3.9
-rwxr-xr-x  1 root root 16K  7月  2 19:10 /usr/bin/python3.11
-rwxr-xr-x  1 root root 16K  7月  2 19:03 /usr/bin/python3.12
-rwxr-xr-x. 1 root root 16K  3月  9 02:56 /usr/bin/python3.9

正常に実行できます。

# python3.12 --version
Python 3.12.9

結論

バージョン 感想
Python 3.9 サポート期間がないためバージョン制約がなければ極力使いたい。

ただ、Platform-Pythonでもあるため、がっつり開発用途には使いたくない(バージョン変更対応があるとか。pip使うとか。)

Python 3.11 サポート期間も短く積極的に利用することはなさそう。
Python 3.12 Python3.9環境が使えないならこれ使う。

まとめ

調べてて気になったのは、Python 3.9(Platform-Python)を避けるために、Python3.12を選択したとして、サポートが2027年までしかないけど、どうなるんだろ?

新しいバージョンが出るのかどうか…。

「Platform-Pythonは使うな」とか明確な指針を出してくれると計画しやすいんですけどねぇ…