Mac OS X 10.7.3 Lionでpythonbrew, virtualenv, pip, buildoutなPython環境を構築する 第1回 はじめに
そうだ、Pythonをやろう
と思ったけど、Python 3とPython 2には後方互換がありません。それならPythonのバージョンを切り替える仕組みが欲しいですね、ってことで調べてみたところ、pythonbrewとvirtualenvを組み合わせて使い、ライブラリの管理・インストールはpipもしくはdistributeを使い、ビルドシステムとしてbuildoutを使う、というのが良さげです。
ということで、MacでPythonまわりの開発環境を作ったときのメモです。
第1回 はじめに (この記事):
http://toggtc.hatenablog.com/entry/2012/02/06/023342
第2回 pythonbrewとPythonのインストール:
http://toggtc.hatenablog.com/entry/2012/02/06/023652
第3回 仮想環境の構築:
http://toggtc.hatenablog.com/entry/2012/02/06/023807
第4回 hello, buildout:
http://toggtc.hatenablog.com/entry/2012/02/06/024326
pythonbrew? virtualenv??
- pythonbrewとは
- perlでいうperlbrew, rubyでいうgemみたいなもの。
- 参考:https://github.com/utahta/pythonbrew
- virtualenvとは
- Python本体とは別に、Pythonの仮想環境を作ってくれる。
- 参考:http://www.virtualenv.org/en/latest/index.html
- pip, setuptools(easy_install), distribute
- Python環境用のパッケージ管理システム。
- 参考: http://www.freia.jp/taka/blog/691/
- buildoutとは
- ビルドシステム。javaでいうところのmavenに近いかも。
- 依存ライブラリを管理するときのパッケージ管理システムとしてeasy_installやdistributeを使うことができる。
- 参考:http://www.buildout.org/
Pythonは現状ではパッケージ管理の仕組みがいろいろとあって、どれも決め手に欠けるのですが、将来的にはpackaging(distutils2)というものに置き換わっていくようです。
どんなことが出来るの?
pythonbrew, virtualenv, buildoutを組み合わせてどんなことができるのか?を妄想してみました。
この例では、2.5.6の環境はGAEアプリ開発用として構築しています。ここでは2.5.6の環境はGAEアプリ用にしか使わないので、仮想化せず実環境を直接利用しています。ただし、buildoutを使っているので、Python本体の環境を汚しません。
2.7.2の環境は、Webサービスクライアントの開発と科学計算モジュールの開発に使うので、それぞれの用途別に2.7.2環境を"py27_web", "py27_sci"として仮想化しています。仮想環境として分けているため、"py27_web"と"py27_sci"はお互いに独立しています。
3.2.2の環境は、仮想化した"py32_lib"をライブラリAの開発用とし、実環境側をライブラリBの試験用として実際にインストールすること等を想定してみました。
素人考えなので突っ込みどころが満載かもしれませんが、仮想環境を作ることで柔軟性が増すということがイメージできれば幸いです。
次回 pythonbrewとPythonのインストール:http://toggtc.hatenablog.com/entry/2012/02/06/023652