Macにpythonbrew+virtualenvでPython環境を作ってみた
Ruby、Perlときたので残るPythonについてもpythonbrewとvirtualenvで環境を整えてみた。いい加減内容がテンプレ的で飽きてきたけどw
PythonもSnow Leopardでは2.6.1なので2.7とか3.2が使いたいよねーってことで。
タイトルには「Macで〜」って入ってるけど、pythonbrew自体はUNIX系の環境で使えます。
pythonbrewっていうのは、複数のPythonバージョンを簡単にインストールしたり切り替えたりできるようにするツールで、RubyでいえばRVM、Perlでいえばperlbrewみたいなもん。*1
これを使えばOS標準の環境も汚さないし、2.6系、2.7系、3系とかプロジェクトで使用中のバージョンと最新版とか色々な複数の環境を簡単に共存させて使い分けることができる。ステキ!
pythonbrewを使うとこんな感じでサクサク環境を使い分けることができるようになる。
pythonbrew install 2.7.2 ←Python-2.7.2をインストール pythonbrew install 3.2 ←Python-3.2をインストール pythonbrew switch 2.7.2 ←Python-2.7.2に切り替え pythonbrew switch 3.2 ←Python-3.2に切り替え
virtualenvっていうのは、Pythonの新しい独立した環境を構築して自由に切り替えて使えるようにするツール。
pythonbrewと何が違うのかというと、pythonbrewはPythonのインストールから管理してくれるのに対して、virtualenvは既存の実行環境を元にして新しい仮想環境を作ってくれる点が異なる。
virtualenvと、あとそれを便利にするvirtualenvwrapperっていうのを使うとこんな感じでサクサク環境を使い分けることができるようになる。
mkvirtualenv -p /path/to/python-2.6 foo ←2.6をベースにfooという環境を作成 mkvirtualenv -p /path/to/python-2.6 foo2 ←2.6をベースにfoo2という環境を作成 mkvirtualenv -p /path/to/python-3.2 bar ←3.2をベースにbarという環境を作成 workon foo ←foo環境に切り替え workon bar ←bar環境に切り替え deactivate ←virtualenvの環境から抜けてOS標準に戻る
どっちかでいいんじゃないかって気もするけど、そう思うんならそれでいいんだと思う。
とりあえずpythonbrewで新しいインタプリタをインストールして、virtualenvで用途別にぽこぽこ環境を増やしていくというのが流行りらしい(?)のでそれに倣ってみる。
pythonbrewのインストール
pythonbrewのインストール方法は公式サイトに書いてあるコマンドを叩けば簡単に入る。
GitHub - utahta/pythonbrew: Python Environment manager
curl -kLO https://github.com/utahta/pythonbrew/raw/master/pythonbrew-install chmod +x pythonbrew-install ./pythonbrew-install
流れとしてはこんな感じ。
perlbrewと同じだね。
これで$HOME/.pythonbrewにpythonbrewの環境ができあがる。
pythonbrewに関するコマンド
pythonbrewで入れることのできるバージョン一覧
pythonbrew list -k
pythonbrewのアップデート
pythonbrew update
これでpythonbrewが最新になる。
Pythonのインストール
Pythonのインストール
pythonbrew install 2.7.2
これでPython-2.7.2がインストールされる。
別名をつけてインストール
pythonbrew install --as=mypython 2.7.2
これでPython-2.7.2がmypythonという名前でインストールされる。
configureオプションを指定する
pythonbrew install --configure="CC=gcc_4.1" 2.7.2
アンインストール
pythonbrew uninstall 2.7.2
Pythonbrewを切り替える
入ってるPython一覧
pythonbrew list
これでインストールされているPythonの一覧が表示される。
Pythonを切り替える
pythonbrew switch 2.7.2
これで2.7.2を使うためのPATHとかその他の環境変数が切り替わったので、今すぐPython-2.7.2が使える状態になる。
RVMとは逆、perlbrewと同じで永続的に切り替わった状態になる。
現在のシェルだけ切り替える
pythonbrew use 2.7.2
切り替え状態はこのシェルだけ。
OS標準のPythonに戻す
pythonbrew off
これでperlbrewで入れたやつじゃない環境に戻る。
複数のPythonでまとめて実行
pythonbrewにはインストールしてあるPythonでまとめて実行する機能がある。
これを利用すると書いたプログラムが他のバージョンでもちゃんと動くか一発でテストできる。
まとめて実行
pythonbrew py hello.py
pythonbrewでインストールした全Pythonで実行される。
特定のバージョンで実行
pythonbrew py -p 2.6.6 -p 2.7.2 hello.py
2.6.6と2.7.2で実行される。
リンクを張る
pythonbrew symlink
こうするとpy2.6とかpy2.7.2みたいなリンクが.pythonbrew/binに出来るので手軽に実行出来るようになる。
ただしpythonbrew offするとリンクも消えてしまうみたい。
あと、実はpythonbrewはpybrewというコマンド名でも実行できる。
virtualenvとvirtualenvwrapper
続けてvirtualenvのインストール。
とりあえずどれでもいいのでvirtualenvを入れたい環境にswitchする。
pythonbrew switch 2.7.2
pipでvirtualenvとvirtualenvwrapperをインストール。
pythonbrewによってeasy_installとpipもインストールされている。
pip virtualenv virtualenvwrapper
.bashrcとかに環境変数VIRTUALENVWRAPPER_PYTHONを設定する。
VIRTUALENVWRAPPER_PYTHON=$HOME/.pythonbrew/pythons/Python-2.7.2/bin/python
pythonbrew symlinkでできたpy2.7.2とかを指定するのがいいっぽいんだけど、pythonbrew offすると消えちゃうので直に指定してみた。
.bashrcとかでvirtualenvwrapper.shを読み込む。
source $HOME/.pythonbrew/pythons/Python-2.7.2/bin/virtualenvwrapper.sh
これもpythonbrew symlink -d 2.7.2 virtualenvwrapper.shとかでできたのを指定するっぽいんだけど(ry
virtualenvで環境を操作する
まー、冒頭のサンプルの通り。
それ以外に一覧を表示するlsvirtualenvとか、環境を削除するrmvirtualenvとか色々ある。
詳しくは公式ドキュメントのコマンドリファレンスを参照。
参考
*1:perlbrewにインスパイアされてできたらしい。