« Raspberry PiにTeamViewerをインストール | トップページ | WordpressにWP Tabsでタブを追加してみた »

2021年1月25日 (月)

Raspberry PiのDefaultのPythonを2.7から3.7に変更する

最近TWELITEでPySimpleGUIを使っている。なんだかPython2.7では具合が悪かった、というかフツーにPySimpleGuiをインストールするとPython3用が入ってくる。Python2.7はpysimplegui2.7をインストールせよ的な情報が幾つもあるし、Python2.7でPySimpleGUIを使おうとして困っている書き込みの多々ある。

で、Raspberry Pi 4のpythonはどうなっているか確認したら2.7.16だった。Python 3も入っていてPython 3.7.3だった。このDefaultのpythonをPython 3に切り替えたい。

Debianではalternativesというコマンドがある。どうやら、指定したコマンドのシンボリックリンクを作って特定のディレクトリに保存しおき、このコマンドが発行されたらそのシンボリックリンクを呼び出すようだ。このシンボリックリンクは同じコマンドに対して複数登録できて、その中のどれを選ぶかも決められる。つまり、今回のようにpythonコマンドが呼ばれた際に2.7を呼び出すか、3.6を呼び出すかをここで管理できるわけだ。

使うコマンドは以下になる。
update-alternative --install

このコマンドの使い方は以下のようだ。
--install link name path priority [--slave link name path]...選択肢のグループをシステムに追加する。link は master リンクの一般名、 name は alternatives ディレクトリにおけるシンボリックリンクの名前、 path は master リンクとなる選択肢の名前となる。

で早速実行した。

Pythonsw

以下、上記コンソール表示内容の解説。

pi@raspberrypi:~ $ python --version   <- Defaultは2.7.16
Python 2.7.16
pi@raspberrypi:~ $ python3 --version
Python 3.7.3

pi@raspberrypi:~ $ ls -l /usr/bin/python*

lrwxrwxrwx 1 root root 7 3月 5 2019 /usr/bin/python -> python2 <- ここのディレクトリではpython2にシンボリックリンクが張られている
lrwxrwxrwx 1 root root 14 3月 5 2019 /usr/bin/python-config -> python2-config
lrwxrwxrwx 1 root root 9 3月 5 2019 /usr/bin/python2 -> python2.7  <- python2.7へのシンボリックリンク
lrwxrwxrwx 1 root root 16 3月 5 2019 /usr/bin/python2-config -> python2.7-config
-rwxr-xr-x 1 root root 154 12月 30 2018 /usr/bin/python2-pbr
-rwxr-xr-x 1 root root 2984816 10月 11 2019 /usr/bin/python2.7 <- python2.7の実態
lrwxrwxrwx 1 root root 36 10月 11 2019 /usr/bin/python2.7-config -> arm-linux-gnueabihf-python2.7-config
lrwxrwxrwx 1 root root 9 3月 26 2019 /usr/bin/python3 -> python3.7  <- python3.7へのシンボリックリンク
lrwxrwxrwx 1 root root 16 3月 26 2019 /usr/bin/python3-config -> python3.7-config
-rwxr-xr-x 2 root root 4275580 12月 21 2019 /usr/bin/python3.7  <- python3.7の実体
lrwxrwxrwx 1 root root 36 12月 21 2019 /usr/bin/python3.7-config -> arm-linux-gnueabihf-python3.7-config
-rwxr-xr-x 2 root root 4275580 12月 21 2019 /usr/bin/python3.7m
lrwxrwxrwx 1 root root 37 12月 21 2019 /usr/bin/python3.7m-config -> arm-linux-gnueabihf-python3.7m-config
lrwxrwxrwx 1 root root 10 3月 26 2019 /usr/bin/python3m -> python3.7m
lrwxrwxrwx 1 root root 17 3月 26 2019 /usr/bin/python3m-config -> python3.7m-config

alternativeへの登録を確認。pythonは未登録。
pi@raspberrypi:~ $ sudo update-alternatives --list python
update-alternatives: エラー: python の alternatives がありません

python2.7をpriority 1で登録
pi@raspberrypi:~ $ sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
update-alternatives: /usr/bin/python (python) を提供するために自動モードで /usr/bin/python2.7 を使います

python3.7をpriority 2で登録
pi@raspberrypi:~ $ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.7 2
update-alternatives: /usr/bin/python (python) を提供するために自動モードで /usr/bin/python3.7 を使います

登録内容の確認
pi@raspberrypi:~ $ sudo update-alternatives --list python
/usr/bin/python2.7
/usr/bin/python3.7

構成内容の確認。優先度が高いpython3.7が自動モードで選択されることがわかる
pi@raspberrypi:~ $ sudo update-alternatives --config python
alternative python (/usr/bin/python を提供) には 2 個の選択肢があります。

選択肢 パス                          優先度 状態
------------------------------------------------------------
* 0     /usr/bin/python3.7    2        自動モード
   1     /usr/bin/python2.7    1        手動モード
   2     /usr/bin/python3.7    2        手動モード

現在の選択 [*] を保持するには <Enter>、さもなければ選択肢の番号のキーを押してください:

pythonのバージョンが3.7.3になっていることを確認
pi@raspberrypi:~ $ python --version
Python 3.7.3
pi@raspberrypi:~ $

以上で作業終了。

« Raspberry PiにTeamViewerをインストール | トップページ | WordpressにWP Tabsでタブを追加してみた »

ツールの使い方」カテゴリの記事

ラズパイ日記」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« Raspberry PiにTeamViewerをインストール | トップページ | WordpressにWP Tabsでタブを追加してみた »