alternativesコマンドを使ったPythonのバージョン切り替え方法

Others,Rocky Linux/CentOS

dnfコマンドとalternativesコマンドを使ったPythonのバージョン切り替え方法です。
Rocky Linux環境を例に、dnfコマンドを使って複数バージョンのPythonをインストールし、alternativesコマンドで切り替える手順を紹介しています。

※ Rocky Linux release 9.4 (Blue Onyx)で確認しています。
※ 確認には、Azure環境上の仮想マシン(Azure Virtual Machines)を利用しています。
※ コマンド例はrootユーザーで実行しています。一般ユーザーの場合は適宜sudoを付けて実行してください。

pyenvコマンドを利用した方法についてはこちらで紹介しています。

スポンサーリンク

dnfコマンドで複数バージョンのPythonをインストール

デフォルトのPythonのバージョンを確認

初期状態でRocky LinuxにインストールされているPythonのバージョンを確認します。
“python -V"もしくは"python –version"コマンドでPythonバージョンを確認できます。

[root@vm-01 ~]# python -V
Python 3.9.18

dnfで提供されているPythonのバージョンを確認

dnfリポジトリで提供されているPythonのバージョンを確認します。
この環境ではpython3.11(python3.11.x86_64)とpython3.12(python3.12.x86_64)が利用可能です。

[root@vm-01 ~]# dnf list available 'python3.[0-9][0-9].x86_64’
Last metadata expiration check: 0:04:38 ago on Sun Sep 29 01:27:55 2024.
Available Packages
python3.11.x86_64 3.11.7-1.el9_4.5 appstream
python3.12.x86_64 3.12.1-4.el9_4.3 appstream

バージョンを指定してPythonをインストール

Pythonのバージョンを指定してインストールします。
今回はPython 3.11と3.12をインストールします。

[root@vm-01 ~]# dnf install -y python3.11
Last metadata expiration check: 0:02:16 ago on Sun Sep 29 01:33:44 2024.
Dependencies resolved.
================================
Package Arch Version Repository Size
================================
Installing:
python3.11 x86_64 3.11.7-1.el9_4.5 appstream 27 k
Installing dependencies:
libnsl2 x86_64 2.0.0-1.el9.0.1 appstream 30 k
libtirpc x86_64 1.3.3-8.el9_4 baseos 93 k
mpdecimal x86_64 2.5.1-3.el9 appstream 85 k
python3.11-libs x86_64 3.11.7-1.el9_4.5 appstream 9.3 M
python3.11-pip-wheel noarch 22.3.1-5.el9 appstream 1.4 M
python3.11-setuptools-wheel noarch 65.5.1-2.el9_4.1 appstream 713 k

Transaction Summary
================================
Install 7 Packages

~(中略)~

Complete!

[root@vm-01 ~]# dnf install -y python3.12
Last metadata expiration check: 0:04:30 ago on Sun Sep 29 01:33:44 2024.
Dependencies resolved.
================================
Package Arch Version Repository Size
================================
Installing:
python3.12 x86_64 3.12.1-4.el9_4.3 appstream 26 k
Installing dependencies:
python3.12-libs x86_64 3.12.1-4.el9_4.3 appstream 9.0 M
python3.12-pip-wheel noarch 23.2.1-4.el9 appstream 1.5 M

Transaction Summary
================================
Install 3 Packages

~(中略)~

Complete!

インストールしてもPythonのバージョンは変わらない

3.11や3.12の新しいバージョンをインストールした後、Pythonのバージョンを再度確認します。
インストール前と変わらず3.9のままとなっています。

[root@vm-01 ~]# python -V
Python 3.9.18

/usr/bin/にインストールされたPythonを確認

Pythonの実行ファイルは/usr/bin/ディレクトリにインストールされています。
pythonはpython3へのシンボリックリンクで、さらにpython3はpython3.9へのシンボリックリンクになっています。
Python 3.11や3.12をインストールしても、このシンボリックリンクは自動的に変更されません。
そのため、pythonまたはpython3コマンドを実行すると、引き続きpython3.9が実行されます。

[root@vm-01 ~]# ls -l /usr/bin/ | grep python
lrwxrwxrwx. 1 root root 9 Nov 8 2023 python -> ./python3
lrwxrwxrwx. 1 root root 9 Nov 8 2023 python3 -> python3.9
-rwxr-xr-x. 1 root root 15632 Sep 3 19:28 python3.11
-rwxr-xr-x. 1 root root 15632 Sep 3 09:16 python3.12
-rwxr-xr-x. 1 root root 15448 Nov 8 2023 python3.9

—広告—

alternativesコマンドでPythonのバージョン切り替え

シンボリックリンクを手動で変更する方法(おすすめしません)

ln -sfコマンドでシンボリックリンクを直接変更する方法です。
簡単ですが、手動管理となってしまいます。
そのため、alternativesコマンドの利用をおすすめします。

[root@vm-01 ~]# ln -sf /usr/bin/python3.11 /usr/bin/python3
[root@vm-01 ~]# python -V
Python 3.11.7

alternativesコマンドでPythonのバージョンを管理

alternativesコマンドは、Linuxで複数のバージョンが存在するプログラムの管理を簡単にするためのツールです。

Introduction to the alternatives command in Linux

設定には"–install"オプションを利用します。

    • 設定時
      • alternatives –install <シンボリックリンク先> <設定名> <実行ファイルのパス> <優先度>
    • 切替時
      • alternatives –config <設定名> 
    • 削除時
      • alternatives –remove <設定名> <実行ファイルのパス>

※削除してもPythonのパッケージ自体がアンインストールされる訳ではありません。

[root@vm-01 ~]# alternatives –install /usr/bin/python3 python3 /usr/bin/python3.9 1
[root@vm-01 ~]# python -V
Python 3.9.18
[root@vm-01 ~]# alternatives –install /usr/bin/python3 python3 /usr/bin/python3.11 2
[root@vm-01 ~]# python -V
Python 3.11.7
[root@vm-01 ~]# alternatives –install /usr/bin/python3 python3 /usr/bin/python3.12 3
[root@vm-01 ~]# python -V
Python 3.12.1

※ 自動モードでは、優先度が最も高いバージョンが選択されます。

“alternatives –config"コマンドで、使用するPythonのバージョンを手動で切り替えます。
実行すると登録済みのバージョン一覧が表示されます。
使用するバージョンの番号を入力します。

[root@vm-01 ~]# alternatives –config python3

There are 3 programs which provide 'python3’.

Selection Command
———————————————–
1 /usr/bin/python3.9
2 /usr/bin/python3.11
*+ 3 /usr/bin/python3.12

Enter to keep the current selection[+], or type selection number:

2を選択してPythonのバージョンを3.11に切り替えます。

Enter to keep the current selection[+], or type selection number: 2
[root@vm-01 ~]# python -V
Python 3.11.7

alternatives利用時のシンボリックリンク

alternativesを設定すると、python3のシンボリックリンクが/etc/alternatives/python3を経由するように変更されます。
alternativesコマンドでバージョンを切り替えると、このリンク先が自動的に更新されます。

[root@vm-01 ~]# ls -l /usr/bin/ |grep python
lrwxrwxrwx. 1 root root 9 Nov 8 2023 python -> ./python3
lrwxrwxrwx. 1 root root 25 Sep 29 02:10 python3 -> /etc/alternatives/python3
-rwxr-xr-x. 1 root root 15632 Sep 3 19:28 python3.11
-rwxr-xr-x. 1 root root 15632 Sep 3 09:16 python3.12
-rwxr-xr-x. 1 root root 15448 Nov 8 2023 python3.9

—広告—

最後に

dnfコマンドを使った複数バージョンのPythonのインストールと、alternativesコマンドを使ったバージョン切り替え手順を紹介しました。
引き続き色々試してみたいと思います。

Pythonのパッケージ管理システムであるpipのインストール手順については、こちらで紹介しています。

Windows環境へのPythonインストール方法については、こちらで紹介しています。

SeleniumやPlaywrightを利用したブラウザテストの方法については、こちらで紹介しています。

Tera TermやVisual Studio Codeのインストール手順については、こちらで紹介しています。

スポンサーリンク