UbuntuにdirenvでPython3系の環境を作りました。

direnvを使うとPythonの環境構築が楽という話を聞きまして、Ubuntuに3系の環境を作りました。VagrantにUbuntu14.04のboxを入れるところからです。

# ubuntuのboxが入ったVagrantをupする
boxをとってくる

```
vagrant box add ubuntu-14.04 https://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box
```

```
vagrant init ubuntu-14.04
```

```
vagrant up
```

vagrantにログイン

```
vagrant ssh
```

# Ubuntuにパッケージをインストールする

```bash:パッケージをアップデート
sudo apt-get update
```


# pipとpythonzを入れる
pipとpythonzをインストールします。

```bash:pipとpythonzをインストール
sudo apt-get install build-essential zlib1g-dev libbz2-dev libssl-dev libreadline-dev libncurses5-dev libsqlite3-dev libgdbm-dev libdb-dev libexpat-dev libpcap-dev liblzma-dev libpcre3-dev curl python-pip
```

```
curl -kL https://raw.github.com/saghul/pythonz/master/pythonz-install | bash
echo '[[ -s $HOME/.pythonz/etc/bashrc ]] && source $HOME/.pythonz/etc/bashrc' >> $HOME/.bashrc
exec $SHELL
```

# virtualenvを入れる

```
sudo pip install virtualenv
Downloading/unpacking virtualenv
  Downloading virtualenv-13.1.2-py2.py3-none-any.whl (1.7MB): 1.7MB downloaded
Installing collected packages: virtualenv
Successfully installed virtualenv
Cleaning up...
```

# direnvを入れる

```
curl -L -o direnv https://github.com/zimbatm/direnv/releases/download/v2.5.0/direnv.linux-amd64
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   142    0   142    0     0     22      0 --:--:--  0:00:06 --:--:--    37
  0     0    0   602    0     0     93      0 --:--:--  0:00:06 --:--:--    93
100 3579k  100 3579k    0     0   236k      0  0:00:15  0:00:15 --:--:--  865k
```

```
sudo install direnv /usr/local/bin
echo 'type direnv > /dev/null 2>&1 && eval "$(direnv hook bash)" ' >> $HOME/.bashrc
exec $SHELL
```

```
pythonz list -a
略
     2.7.8
     2.7.9
     2.7.10
     3.0
     3.0.1
     3.1
略
```

デフォルトだと2.7.6系が入っているみたいです。

```
python -V
Python 2.7.6
```

# python3系をインストール

```
pythonz install 3.4.3

Downloading Python-3.4.3.tgz as /home/vagrant/.pythonz/dists/Python-3.4.3.tgz
########################################################################## 100%
Extracting Python-3.4.3.tgz into /home/vagrant/.pythonz/build/CPython-3.4.3

This could take a while. You can run the following command on another shell to track the status:
  tail -f /home/vagrant/.pythonz/log/build.log

Installing CPython-3.4.3 into /home/vagrant/.pythonz/pythons/CPython-3.4.3

Installed CPython-3.4.3 successfully.
```

```
pythonz locate 3.4.3
/home/vagrant/.pythonz/pythons/CPython-3.4.3/bin/python3
```

```
pip -V
pip 1.5.4 from /usr/lib/python2.7/dist-packages (python 2.7)
```

# Python3を使うディレクトリを指定

```
pwd
/home/vagrant
```

`/home/vagrant/sand_box` というディレクトリでpython3.4.3を使えるようにします。

```bash:sand_boxディレクトリでpythonが使えるように設定
echo 'layout python $(pythonz locate 3.4.3)' > sand_box/.envrc
direnv allow sand_box
```

# 一旦Vagrantをぬける

```
exit
```

# Vagrantに入り直す

```
vagrant ssh
```
このログアウト手順はいらないかも？

# Python3系のパッケージがインストールされればOK
ここで`sand_box`というディレクトリに移動するとインストールが自動的に始まります。

```
cd sand_box
direnv: loading .envrc
Running virtualenv with interpreter /home/vagrant/.pythonz/pythons/CPython-3.4.3/bin/python3
Using base prefix '/home/vagrant/.pythonz/pythons/CPython-3.4.3'
New python executable in /home/vagrant/sand_box/.direnv/python-3.4.3/bin/python3
Also creating executable in /home/vagrant/sand_box/.direnv/python-3.4.3/bin/python
Installing setuptools, pip, wheel...done.
direnv: export +VIRTUAL_ENV ~PATH
```

##  試しにPrettyTableをいれてみる

```
pip install PrettyTable
Collecting PrettyTable
  Downloading prettytable-0.7.2.tar.bz2
Building wheels for collected packages: PrettyTable
  Running setup.py bdist_wheel for PrettyTable
  Stored in directory: /home/vagrant/.cache/pip/wheels/41/46/ec/ec86e65e50e9f4be52547a3bedd46077e7414c53d2ed0418fd
Successfully built PrettyTable
Installing collected packages: PrettyTable
Successfully installed PrettyTable-0.7.2
```
普通に入りました。もし正しく3.4.3経由でpipが呼ばれていないとうまく入りません。

## Python3系が使われているか確認

```
python -V
Python 3.4.3
```

# 以下おまけ、ほかにもディレクトリを作る
適当に`/var/www/sand_box`というディレクトリを作ってみてそこに他のバージョンのPythonを入れてみました。

```
sudo mkdir /var/www
sudo chown vagrant:vagrant /var/www
```

ディレクトリに移動前はPython2系です。

```
python -V
Python 2.7.6

```

```
pythonz install 3.2.4
Downloading Python-3.2.4.tgz as /home/vagrant/.pythonz/dists/Python-3.2.4.tgz
########################################################################## 100%
Extracting Python-3.2.4.tgz into /home/vagrant/.pythonz/build/CPython-3.2.4

This could take a while. You can run the following command on another shell to track the status:
  tail -f /home/vagrant/.pythonz/log/build.log

Installing CPython-3.2.4 into /home/vagrant/.pythonz/pythons/CPython-3.2.4

Installed CPython-3.2.4 successfully.
```

```
mkdir sand_box
```

`/var/www/sand_box`に移動すると3.2.4系のファイルがインストールされます。

```
cd sand_box/
direnv: loading .envrc
Running virtualenv with interpreter /home/vagrant/.pythonz/pythons/CPython-3.2.4/bin/python3
New python executable in /var/www/sand_box/.direnv/python-3.2.4/bin/python3
Also creating executable in /var/www/sand_box/.direnv/python-3.2.4/bin/python
Installing setuptools, pip, wheel...done.
direnv: export +VIRTUAL_ENV ~PATH
```

```
pip install PrettyTable
Collecting PrettyTable
Installing collected packages: PrettyTable
Successfully installed PrettyTable-0.7.2
```

# 参考
参考サイト色々あったのにメモってなかった＼(^o^)／
http://qiita.com/jnotoya/items/ca9a0dfee6b9f084f4da