Amazon Linux上にPython3.6.0の環境を導入する


目的

  • Amazon Linuxへ、システムに影響のないように、現時点で最新のPython3.6.0を導入します。
  • Pythonの環境切り替えにvirtualenvを使用します。
  • コンパイルはインスタンススペックによりますが、5分ぐらいの作業です。
  • (実際はAmazonLinuxに特化した部分はありません)
  • Amazon Linux上にPython3.5.2の環境を導入する のPython3.6.0版です。基本的に手順は同じになります。

準備

  • Amazon LinuxインスタンスをLaunchし、sshログインできるようにしておきます。

手順

必要パッケージをインストール

  • ソースからビルドするので必要パッケージをインストールします。
  • sqlite-develを入れておくと、ipythonのヒストリーを保持してくれます。
$ sudo yum -y groupinstall 'Development tools'
$ sudo yum -y install openssl-devel sqlite-devel

Python3.6.0をビルド

  • ソースをダウンロードしてコンパイルします。
  • インストール先はログインユーザーのホームディレクトリ内とします。
$ mkdir ~/src
$ cd ~/src
$ wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz
$ tar zxvf Python-3.6.0.tgz
$ cd Python-3.6.0
$ ./configure --prefix=$HOME/local/myPython-3.6.0
$ make
$ make install

virtualenvをインストール

  • Python環境を切り替える仕組みとして使用する virtualenvをインストールします。
  • これはAmazon Linux標準のPython2.7.x環境にインストールします。
$ sudo pip install --upgrade virtualenv

環境切り替え設定

  • ローカルPython環境を設定します。(最初だけ)
  • 指定したディレクトリが新たに設定したPython環境のトップディレクトリになります。
  • 試したところ、virtualenvのパスが狂ってしまうようなので絶対パス指定で記述しています(alternatives関連?)。ログインし直せば大丈夫そうなのでインストール時だけの現象なきがしています。
$ /usr/local/bin/virtualenv --python $HOME/local/myPython-3.6.0/bin/python3.6 $HOME/py360

切り替え確認

  • virtualenvで作成されたactivateスクリプトを実行することでPython3.6.0に切り替わります。
  • プロンプト先頭に環境を示す文字列(ディレクトリ名)が追加されます。
$ source $HOME/py360/bin/activate
(py360)$ python --version
Python 3.6.0
  • 元の環境(Python2.7.x)に戻る場合は下記コマンドを使用します。
(py360)$ deactivate
$ python --version
Python 2.7.12

デフォルトでPython3.6.0にする

  • ログイン時にPython3.6.0環境に切り替えるようにします。
$ echo 'source $HOME/py360/bin/activate' >> ~/.bash_profile

切り替えコマンドをaliasにしておく

  • 頻繁に環境を行ったり来たりするとコマンドが面倒なのでalias設定しています。
$ echo 'alias p3="source $HOME/py360/bin/activate"' >> ~/.bash_profile