2020年1月追記
Amazon Linux、サポート期限アナウンス出てます。
https://aws.amazon.com/jp/amazon-linux-ami/faqs/
この記事、訪問者が非常に多くてとてもありがたいのですが、Amazon Linux2への移行もちゃんと検討して欲しいにゃん!
前提
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を追加インストールします。
- 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
以上。