CentOSとPythonの関係
Pythonは過去にメジャーバージョンが2から3へ移行した際、大幅な更新が発生した。プログラミング言語として新たな機能のサポートはもちろんのこと、メンテナが不在となったライブラリを切り捨てて新たに別名のライブラリを作り直したりと、いろいろな部分で互換性が無くなってしまった。そのため、Pythonで書かれたプログラムは「Python2系」「Python3系」のように、どちらで動作するかを考慮する必要が発生した。
これがCentOSとどう関係してくるかというと、実はCentOS 7のパッケージ管理ツールであるyumは内部でPython2系を使用していた。そのため、CentOS 7でPython2系を3系に上書きインストールしてしまうとyumが動かない事態に陥り、これを回避するのにPython3は「python3
」コマンドとして別途インストールする仕様になった。
しかし、Python3系で書かれた世の中のソースコードは大抵シバン (ファイルの先頭行に記述するおまじない) が#!/usr/bin/env python
とか#!/usr/bin/python
といった具合になっており、CentOS 7で実行する際にPython2系が呼び出されてしまう。そのため、わざわざPython3がデフォルトになるvenv環境を作って読み込ませる等の一手間が必要だった。
これはUbuntuなど他のディストリビューションと比較して非常に面倒くさい制限なので、CentOS 8からのパッケージ管理ツールはPython2系を使用しているyumを切り捨ててdnfとなり (CentOS 8ではyumは内部でdnfを呼んでいる)、特定バージョンのPythonに依存することが無くなった。とはいえ、CentOS 8でもPython3をインストールするとpython3コマンドになるので、pythonと打つだけでpython3コマンドが実行されるように別途設定する。
Python3系のインストール
CentOS 8のリポジトリにはPython 3.6とPython 3.8があり、基本はPython 3.6になる。ここでも、Python 3.6をインストールすることを前提に説明する。
バージョンについて詳しいことはRHEL本家のページを参照。
# dnf install python3
# python3 --version
Python 3.6.8
デフォルトのPythonに設定する
Python3をインストールしただけの状態では、単にpythonと打ってもパスが通っておらずエラーになる。これではシバンにpythonと定義されているファイルが実行できないので、デフォルトのPythonに設定する。
# python --version
-bash: python: コマンドが見つかりません
# alternatives --set python /usr/bin/python3
# python --version
Python 3.6.8
コメント
[…] CentOS 8にNginxとPython 3が既にインストールされている状態から説明します。CentOS 7でも同様に動作するはずです。まだの方は、当サイトのCentOS 8に最新のNginxをインストールとCentOS 8にPythonをインストールを見てください。 […]