Python
AWS
EC2

Amazon LinuxでPython3系を使う

Amazon LinuxにPython3系をインストールした時のメモです。

環境

Amazon Linux

Amazon Linuxではインスタンス起動時点でPython2系が使用可能ですが、これから新しく何かを作ろうとするのであれば3系を使ったほうがよいので、デフォルトでPython3系が動くようにします。

python3 コマンドで3系を動かすという手もありますが、今回は python コマンドで3系が動くようにします。

Pythonのバージョン管理

pyenv というコマンドラインツールを使用して、Pythonのバージョン管理を行います。

今回の目的は3系を使用するようにすることですが、こちらのツールを使用すればいつでも簡単にデフォルトの2系、または他のバージョンに切り替えることができます。

手順

1. pyenvを使用するために必要なライブラリのインストール

$ sudo yum install gcc gcc-c++ make git openssl-devel bzip2-devel zlib-devel readline-devel sqlite-devel

2. pyenvのインストール、権限・パスの設定

$ sudo git clone https://github.com/yyuu/pyenv.git /usr/bin/.pyenv
$ cd /usr/bin/.pyenv
$ sudo mkdir shims
$ sudo mkdir versions

(任意)phpexec()でpythonコマンドを実行する際権限のエラーとなったため、.pyenv以下の権限を変更

$ sudo chown -R ec2-user:apache /usr/bin/.pyenv

# あるいはapacheがインストールされていない場合は
$ sudo chown -R ec2-user:ec2-user /usr/bin/.pyenv

パス設定

$ vi ~/.bashrc
; 下記を追記
export PYENV_ROOT="/usr/bin/.pyenv"
if [ -d "${PYENV_ROOT}" ]; then
export PATH=${PYENV_ROOT}/bin:$PATH
eval "$(pyenv init -)"
fi
; ここまで
$ source ~/.bashrc

3. pythonの任意のバージョンをインストール

インストール可能なバージョンの確認

$ pyenv install --list
(...略...)
 2.7.12
 2.7.13
 2.7.14rc1
 3.0.1
 3.1
 3.1.1
 3.1.2
 3.1.3
 3.1.4
 3.1.5
(...中略...)
 3.5.4
 3.6.0
 3.6-dev
 3.6.1
 3.6.2
 3.7-dev
(...略...)

pythonインストール

$ pyenv install 3.6.2   
※この時点ではまだデフォルトのバージョン
$ python -V
Python 2.7.12

メインで使用するバージョンの変更

$ pyenv global 3.6.2
$ python -V
Python 3.6.2

元に戻したい場合、他のバージョンを使いたい場合

$ pyenv versions
 system
 * 3.6.2 (set by /usr/bin/.pyenv/version)
$ pyenv global {使いたいバージョン(system)}