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

Others,RockyLinux/CentOS

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

※ Rocky Linux release 9.4 (Blue Onyx)を利用して確認しています。
※ Azure Virtual Machinesを利用して確認しています。
※ すべてのコマンドはrootユーザーで実行しています。環境に合わせて適宜sudoを利用してコマンドを実行してください。

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

スポンサーリンク

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

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

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

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

Pythonのパッケージのバージョンを確認

提供されているPythonのバージョンを確認します。
python3.11.x86_64とpython3.12.x86_64が提供されています。

[root@test-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のバージョン指定してインストールします。
今回は3.11と3.12をインストールしています。

[root@test-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@test-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@test-vm-01 ~]# python -V
Python 3.9.18

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

Pythonは/usr/bin/ディレクトリにインストールされています。
pythonはpython3へのシンボリックリンクが設定されいます。
さらにpython3はpython3.9へのシンボリックリンクになっています。
Python3.11や3.12をインストールしてもシンボリックリンクの設定が変更されていません。
そのため、pythonまたはpython3コマンドを実行するとpython3.9が実行されます。

[root@test-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のバージョン切り替え

シンボリックリンクを変更してPythonのバージョンを切り替える

シンボリックリンクを変更してPythonのバージョンを切り替えます。
バージョンを確認すると3.11に切り替わっている事が確認できます。

[root@test-vm-01 ~]# ln -sf /usr/bin/python3.11 /usr/bin/python3
[root@test-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@test-vm-01 ~]# alternatives –install /usr/bin/python3 python3 /usr/bin/python3.9 1
[root@test-vm-01 ~]# python -V
Python 3.9.18
[root@test-vm-01 ~]# alternatives –install /usr/bin/python3 python3 /usr/bin/python3.11 2
[root@test-vm-01 ~]# python -V
Python 3.11.7
[root@test-vm-01 ~]# alternatives –install /usr/bin/python3 python3 /usr/bin/python3.12 3
[root@test-vm-01 ~]# python -V
Python 3.12.1

※優先度が高い順に切り替わっていきます。

Pythonのバージョン切り替えます。
“alternatives –config"コマンドを実行します。
Enter to keep the current selection[+], or type selection number:と表示されます。
使用するバージョンの番号を選択します。

[root@test-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@test-vm-01 ~]# python -V
Python 3.11.7

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

Pythonのシンボリックリンクがalternativesに切り替わっています。

[root@test-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のバージョンを切り替え手順を確認しました。
引き続き色々試してみたいと思います。

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

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

スポンサーリンク