virtualenvはPython用の仮想環境構築のためのモジュール。virtualenvwrapperはvirtualenvを楽に使うためのラッパー。とりあえずPython周りの環境は、基本的にPython自体をHomebrewで、モジュールはvirtualenv + virtualenvwrapper + pip で管理することにする。

Pythonのインストール

必要な物をHomebrewでインストール。

$ python -V
Python 2.7.2 # Macに標準で入ってるPython
$ brew install readline sqlite gdbm
$ brew install python --universal --framework
$ python -V
Python 2.7.2

あれっ?変化なし? bashだとPathは問題なく2.7.3が起動したけど、普段使ってるtmux + zshだと2.7.2が起動した。.zshrcに以下のようにPathの記述をする必要あり。

export PATH=/usr/local/bin:/usr/local/sbin:/sbin:/usr/sbin:${PATH}

.zshrcの再読み込み

$ source .zshrc
$ python -V
Python 2.7.3

これでPython2系最新版のインストールはOK。

virtualenvとvirtualenvwrapperのインストール

$ which pip # インストール先の確認
/usr/local/bin/pip # Homebrewでインストールした先になっているのを確認
$ pip install virtualenv
$ pip install virtualenvwrapper
$ mkdir ~/.virtualenvs

.zshrcに

#virtualenv settings
export WORKON_HOME=$HOME/.virtualenvs
. /usr/local/share/python/virtualenvwrapper.sh

を記述。

$ source .zshrc # リロード
virtualenvが見えない…

.zshrcに

export PATH=/usr/local/share/python:${PATH}

を追記。

$ source .zshrc

問題解決。

テスト

$ pip freeze # 現在のモジュールの確認 (virtualenvなど)
$ mkvirtualenv test1 # test1という環境を作成
$ deactivate #環境から抜ける
$ mkvirtualenv test2 # test2という環境を作成
$ workon # 環境の一覧を確認
test1
test2
$ workon test1 # testを選択
$ pip install numpy # test1 にnumpyをインストール
$ pip freeze # nuupyのインストールを確認
$ deactivate 
$ pip freeze # 元の環境に影響がないのを確認
$ rmvirtualenv test1 # テスト環境を削除
$ rmvirtualenv test2
$ workon # 出力なし 削除完了

動作確認完了。モジュールの切り替えが非常に楽なので、今後の開発が捗りそう。

Octopressとzshのトラブル?

この記事を書こうとして、

$ rake new_post["2"]

を実行したら、

$ zsh: no matches found: new_post["2"]

というエラーが。何故だ?しかし、

$ rake new_post
$ Enter a post title:2

作成できたぞ?今回Pathを弄ったのが原因か?
この辺の動作がよくわからんので。また確認しとかないと。

追記

.zshrcに

alias rake="noglob rake"

を追記したらエラー消えました。ありがとうございます > shogo82148 。