Python3.6 インストール on Amazon Linux AMI

# 2020年1月追記
Amazon Linux、サポート期限アナウンス出てます。
https://aws.amazon.com/jp/amazon-linux-ami/faqs/
この記事、訪問者が非常に多くてとてもありがたいのですが、Amazon Linux２への移行もちゃんと検討して欲しいにゃん！

# 前提
Amazon Linux上にPython 3.6環境を作る際、ちょっと沼に沈みかけたので、メモメモ。

# 利用したサービス
**Amazon Linux**です。Amazon Linux2ではない。
知識として、ざっくり以下のポイントを押さえておけばOK

- Amazon Linux系は「RHEL」系に所属
- Amazon Linux は、CentOS 6 相当
- Amazon Linux 2 は、CentOS 7相当

で、実績を重視したり、安定性を求めたりするジャパニーズなお客様はCentOS6が大好きだったりするので、必然的に無印Amazon Linuxになったりするわけですにゃ～ん。

# 何が問題か？

Amazon Linuxを稼働させるためにPythonが標準でインストールされていますが、**2.x系**です。

さらに**Python2を無理やり引っこ抜くとOSが不安定になる**というお墨付きデス。

# 解決方法
以下の手法で、Python3を追加インストールします。

1. Amazon Linux の初期Pythonバージョンを確認。

```
[admin@ip-hogehoge ~]$ python -V
Python 2.7.15
[admin@ip-hogehoge ~]$
```

2．インストール可能なPython 3.6ファイルを確認。

```
[admin@ip-hogehoge ~]$ yum list | grep python36
mod24_wsgi-python36.x86_64            3.5-1.25.amzn1                amzn-updates
python36.i686                         3.6.7-1.10.amzn1              amzn-updates
python36.x86_64                       3.6.7-1.10.amzn1              amzn-updates
python36-bcc.x86_64                   0.6.0-5.2.amzn1               amzn-updates
python36-debug.i686                   3.6.7-1.10.amzn1              amzn-updates
python36-debug.x86_64                 3.6.7-1.10.amzn1              amzn-updates
python36-devel.i686                   3.6.7-1.10.amzn1              amzn-updates
python36-devel.x86_64                 3.6.7-1.10.amzn1              amzn-updates
python36-libs.i686                    3.6.7-1.10.amzn1              amzn-updates
python36-libs.x86_64                  3.6.7-1.10.amzn1              amzn-updates
python36-lit.noarch                   0.5.1-1.0.amzn1               amzn-updates
python36-pip.noarch                   9.0.3-1.26.amzn1              amzn-updates
python36-setuptools.noarch            36.2.7-1.33.amzn1             amzn-main
python36-test.i686                    3.6.7-1.10.amzn1              amzn-updates
python36-test.x86_64                  3.6.7-1.10.amzn1              amzn-updates
python36-tools.i686                   3.6.7-1.10.amzn1              amzn-updates
python36-tools.x86_64                 3.6.7-1.10.amzn1              amzn-updates
python36-virtualenv.noarch            15.1.0-1.14.amzn1             amzn-main
[admin@ip-hogehoge ~]$
```

3.Python 3.6 インストール。

```
sudo yum -y install python36-devel python36-libs python36-setuptools 
```

4.Python 2.xと、Python3.xが共存する事を確認。

```
[admin@ip-hogehoge ~]$ python -V
Python 2.7.15
[admin@ip-hogehoge ~]$ python3 -V
Python 3.6.7
[admin@ip-hogehoge ~]$

```

5.PipをPython3対応の為にアップグレード

```
[admin@ip-hogehoge ~]$ sudo python3 -m ensurepip --upgrade
Looking in links: /tmp/tmpwcevtsc7
Collecting setuptools
Collecting pip
Installing collected packages: setuptools, pip
  Found existing installation: setuptools 36.2.7
    Uninstalling setuptools-36.2.7:
      Successfully uninstalled setuptools-36.2.7
  Found existing installation: pip 9.0.3
    Uninstalling pip-9.0.3:
      Successfully uninstalled pip-9.0.3
Successfully installed pip-10.0.1 setuptools-39.0.1
[admin@ip-hogehoge ~]$
```
実はこれだけでは足りないので、追加で以下のコマンドを実行。

```
[admin@ip-hogehoge ~]$ pip3 --version
pip 10.0.1 from /usr/local/lib/python3.6/site-packages/pip (python 3.6)
[admin@ip-hogehoge ~]$
[admin@ip-hogehoge ~]$ sudo python3 -m pip install --upgrade pip
（中略）
[admin@ip-hogehoge ~]$
[admin@ip-hogehoge ~]$ pip3 --version
Pip 19.0.2 from /usr/local/lib/python3.6/site-packages/pip (python 3.6)
[admin@ip-hogehoge ~]$
```
6.pipのバージョンが、19.0.2以上になれば、Python3に対応しています。

#使い分け

- Python2を使いたいとき

```
python hogehoge
pip hogehoge
```
- Python3を使いたいとき

```
python3 hogehoge
pip3 hogehoge
```

以上。