どうも、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つが使えるようです。
確かに使えるようになっていました。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という考え方があるようです。
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を直接使用しないよう注意事項がありました。
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は使うな」とか明確な指針を出してくれると計画しやすいんですけどねぇ…