CentOS7にpython3をインストールして安全に切り替える

CentOS7にpython3をインストールして安全に切り替える

今回は、CentOS7へpythonをインストールする方法を紹介します。CentOSはまだpython2に依存していますので、python3に切り替えるには自分でインストールして、うまく切り替えないといけません。

1.OSの状態を確認

まずはCentOSのバージョンとpythonのインストール状況を確認します。

OSのバージョン確認

$ cat /etc/redhat-release
---結果---
CentOS Linux release 7.6.1810 (Core) 

ちなみに、Amazon Linuxの場合は下記で確認できます。

$ cat /etc/os-release

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

$ python --version
---結果---
Python 2.7.5

pythonのインストール状況の確認

$ cd /usr/bin
$ ls | grep python
---結果---
python
python2
python2.7

ということで、python2だけしかインストールされてないことが確認できたので、python3をインストールします。

2.yumでpython3のインストール

2.1リポジトリの追加

そもそもCentOS7.6ではリポジトリごとないので、リポジトリを追加します。7.7だとリポジトリの追加なしでも大丈夫なようです。

yum install -y https://repo.ius.io/ius-release-el7.rpm

リポジトリが作成できたか確認します。

ls /etc/yum.repos.d | grep ius
---結果---
ius-archive.repo
ius-testing.repo
ius.repo

2.2.python3のインストール

最新版のpythonを探します。

yum search python36

必要なパッケージをインストールします。

yum install -y python36u python36u-libs python36u-devel python36u-pip

パッケージが実際に追加されたことを確認します。

$ cd /usr/bin
$ ls | grep python
---結果---
python
python2
python2.7
python3
python3-config
python3.6
python3.6-config
python3.6m
python3.6m-config
python3.6m-x86_64-config

インストールしただけでは、pythonコマンドはversion2を参照します。python3を参照するにはpython3コマンドを利用します。

$ python --version
---結果---
Python 2.7.5

$ python3 --version
---結果---
Python 3.6.8

2.3.pipのインストール

pipはpythonのパッケージ管理ツールです。必ず使いますので、バージョンアップして使えるようにしておきます。

python3.6 -m pip install --upgrade pip

ここまでで、インストールは完了です。次は環境を構築していきます。

3.python3をデフォルトで利用する

いちいちpython3と打つのが困る場合は、下記の3つの方法で変更できます。

3.1.aliasで指定する方法(推奨)

aliasで指定します。この方法の場合、別ユーザの環境に影響を与えることがない、無駄なパッケージなどを追加する必要がないということで現時点ではおすすめです。

python3を利用できるようにaliasを追加します。

alias python='/usr/bin/python3'

aliasが追加できているかどうか確認します。

$ alias | grep python
---結果---
alias python='/usr/bin/python3'

再度バージョンを確認すると、きちんと切り替わっていることが確認できます。

$ python --version
---結果---
Python 3.6.8

python2を再び参照するには、aliasを削除するか、python2を指定します。

#バージョンの切替2の場合
$ alias python='/usr/bin/python2.7'

#エイリアスの削除をする場合
$ unalias python

ただ、aliasを追加しただけだと、ログインし直した際などに、aliasがなくなってしまいます。再ログイン時にも自動で利用できるようにするには.bashrcにaliasを記載します。

$ cd /home/centos
$ vi .bashrc

#下記の後に記載
# User specific aliases and functions
alias python='/usr/bin/python3'

これで再度ログインした際もpython3を自動で参照してくれます。

3.2.pipenvを利用する(推奨2)

サードパーティのツールpipenvを利用する例です。環境が複雑化したりするのが嫌でなければこの方法が良いです。まずはpipを利用してインストールします。

$ pip install pipenv

pipenvでは、プロジェクトディレクトリごとに環境を作成することができ、その中でpythonのパッケージのバージョン管理をしてくれます。

そこでまずは、プロジェクトディレクトリ を作成し、環境を初期化します。

#プロジェクトディレクトリの作成
$ mkdir ./python-work
$ cd ./python-work

#初期化
$ pipenv --python 3

初期化した後にはPipfileというファイルが作成されます。

$ cat Pipfile
[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]

[packages]

[requires]
python_version = "3.6"

これで、準備OKです。後は、プロジェクトディレクトリ 内でpip env shellを起動します。

$ pipenv shell
Launching subshell in virtual environment…
[centos@ip-172-31-23-251 python-work]$  . /home/centos/.local/share/virtualenvs/python-work-qtOy3FKk/bin/activate
(python-work) [centos@ip-172-31-23-251 python-work]$ 

この状態で、pythonのバージョンを確認すると3になっています。

(python-work) [centos@ip-172-31-23-251 python-work]$ python --version
Python 3.6.8

3.3.コマンドを置き換える方法(だめ)

一応こんなやり方もできるという紹介です。

コマンドそのものを置き換えるのですが、CentOSではyumなどはいまだにpython2を利用しているので、これをやるとyumでエラーなどが発生してしまい動かなくなります。また、他のユーザにも影響を与えてしまいます。

ファイルそのものを変更
cd /usr/bin/
mv python python_bk
cp python3 python

4.まとめ

以上で、インストールと環境構築は完了です。pythonライフを楽しんでください!

サーバ・クラウドカテゴリの最新記事