Python in Amazon Linux - インストール編 (pyenv-virtualenv)
前回のエントリーでは、pyenv を用いて Amazon Linux に Python 3.3.4 をインストールするところまでやりました。
Python in Amazon Linux - インストール編 (pyenv)
今回は pyenv-virtualenv を使用してアプリケーション環境を構築してみたいと思います。
pyenv-virtualenv は、前回のエントリーのように pyenv-installer を使って pyenv をインストールすると、自動的にインストールされます。
pyenv-virtualenv は、virtualenv を pyenv のプラグインにしたものです。
virtualenv がどういうものか、ぶっちゃけまだよく分かっていないのですが、複数のアプリケーション環境を、それぞれに余計なモジュールを入れずに構築するためのツールだと思っています。
(virtualenv に関するエントリーは、以下が詳しいと思います)
たとえば以下のような環境を 1 サーバー上に展開したいとします。
- kakarot
- Python 3.3.4
- tornado
- vegeta
- Python3.3.1
- bottle
pyenv-virtualenv を使用して、以下の手順で実現できます。
# kakarot の構築 $ cd ~ $ pyenv virtualenv 3.3.4 kakarot-3.3.4 # ~/.pyenv/versions/kakarot-3.3.4 が作成されます $ mkdir kakarot $ cd kakarot $ pyenv local kakarot-3.3.4 $ python -V Python 3.3.4 $ pip install tornado # tornado インストール確認 ls -l ~/.pyenv/versions/kakarot-3.3.4/lib/python3.3/site-packages/ total 500 -rw-rw-r-- 1 ec2-user ec2-user 214 Feb 23 12:54 easy-install.pth drwxrwxr-x 7 ec2-user ec2-user 4096 Feb 23 12:54 pip drwxrwxr-x 2 ec2-user ec2-user 4096 Feb 23 12:54 pip-1.5.4.dist-info -rw-rw-r-- 1 ec2-user ec2-user 486997 Feb 23 12:54 setuptools-0.9.6-py3.3.egg -rw-rw-r-- 1 ec2-user ec2-user 29 Feb 23 12:54 setuptools.pth drwxrwxr-x 5 ec2-user ec2-user 4096 Feb 23 12:59 tornado drwxrwxr-x 2 ec2-user ec2-user 4096 Feb 23 12:59 tornado-3.2-py3.3.egg-info # vegeta の構築 $ cd ~ $ pyenv virtualenv 3.3.1 vegeta-3.3.1 # ~/.pyenv/versions/vegeta-3.3.1 が作成されます $ mkdir vegeta $ cd vegeta $ pyenv local vegeta-3.3.1 $ python -V Python 3.3.1 $ pip install bottle # bottle インストール確認 $ ls -l ~/.pyenv/versions/vegeta-3.3.1/lib/python3.3/site-packages/ total 648 drwxrwxr-x 2 ec2-user ec2-user 4096 Feb 23 13:21 bottle-0.12.4-py3.3.egg-info -rw-rw-r-- 1 ec2-user ec2-user 148569 Feb 23 13:21 bottle.py -rw-rw-r-- 1 ec2-user ec2-user 214 Feb 23 13:21 easy-install.pth drwxrwxr-x 7 ec2-user ec2-user 4096 Feb 23 13:21 pip drwxrwxr-x 2 ec2-user ec2-user 4096 Feb 23 13:21 pip-1.5.4.dist-info drwxrwxr-x 2 ec2-user ec2-user 4096 Feb 23 13:21 __pycache__ -rw-rw-r-- 1 ec2-user ec2-user 487003 Feb 23 13:21 setuptools-0.9.6-py3.3.egg -rw-rw-r-- 1 ec2-user ec2-user 29 Feb 23 13:21 setuptools.pth
kakarot と vegeta はそれぞれ独立していますので、vegeta を削除したいと思ったら以下のようにします。
# vegeta 削除 $ pyenv uninstall vegeta-3.3.1 pyenv: remove /home/ec2-user/.pyenv/versions/vegeta-3.3.1? y # vegeta 削除確認 $ python -V pyenv: version `vegeta-3.3.1' is not installed
kakarot に影響はなく、vegeta の方だけ、環境が削除されます。