プレイヤーズ・ハイ

 雑多な日記

Python in Amazon Linux - インストール編 (pyenv-virtualenv)

f:id:i97506051502:20140222180921p:plain

前回のエントリーでは、pyenv を用いて Amazon Linux に Python 3.3.4 をインストールするところまでやりました。

Python in Amazon Linux - インストール編 (pyenv)

今回は pyenv-virtualenv を使用してアプリケーション環境を構築してみたいと思います。

yyuu/pyenv-virtualenv

pyenv-virtualenv は、前回のエントリーのように pyenv-installer を使って pyenv をインストールすると、自動的にインストールされます。

pyenv-virtualenv は、virtualenv を pyenv のプラグインにしたものです。

virtualenv がどういうものか、ぶっちゃけまだよく分かっていないのですが、複数のアプリケーション環境を、それぞれに余計なモジュールを入れずに構築するためのツールだと思っています。

(virtualenv に関するエントリーは、以下が詳しいと思います)

日のPython: 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 の方だけ、環境が削除されます。