Pythonのバージョンを管理するツール、pythonbrewを作ってみた

Perlのperlbrewってツールが凄く使いやすくて羨ましかったので、Pythonで使えるpythonbrewってツールを作ってみました。

perlbrew?

perlbrewとはPerlをバージョン毎にインストールして、それらをswitchして使ったりできるツールのこと。
既存の環境を壊さずに最新のPerlを簡単に試すことができます。
PerlからCPANモジュールまでホームディレクトリ以下に全部インストールしてくれるので、自分専用のPerl環境を構築することができます。
perlbrewの作者の劉康民さんは、本当にすばらしいアイデアの持ち主。

pythonbrewとは

基本的にperlbrewをパクったと同じ思想なツール。
Pythonインタプリタのインストールから、それらの管理まで面倒をみてくれます。

例えば、一からPython2.6.6、2.5.5、2.4.6の環境を構築したいなーってとき、
pythonbrewを使えばたった数コマンドでいとも簡単に実現できます。

コマンドで示すと以下の通り。

# 2.6.6をインストール&2.6.6環境に変更  
$ pythonbrew install 2.6.6  
$ pythonbrew switch 2.6.6  
  
# 2.5.5をインストール&2.5.5環境に変更  
$ pythonbrew install 2.5.5  
$ pythonbrew switch 2.5.5  
  
# 2.4.6をインストール&2.4.6環境に変更  
$ pythonbrew install 2.4.6  
$ pythonbrew switch 2.4.6   
  
# 2.5.5環境に変える  
$ pythonbrew switch 2.5.5  
  
# 2.6.6環境に変える  
$ pythonbrew switch 2.6.6  

easy_installpipも一緒にインストールするので、初っぱなの環境構築するときとかに地味に便利です。

モダンなPythonの開発環境の構築方法さんでいうところの「インストール」〜「easy_installのインストール」までを補うツールって立ち位置な感じ。

virtualenvとの違いは?

一番の違いは、Pythonインタプリタのインストールから、それらの管理まで面倒をみる点です。

virtualenvは、Pythonインタプリタが存在することを前提としています。

pythonbrew と virtualenv の共存といったら烏滸がましいですが、
例えば、pythonbrew で一通りPythonインタプリタをインストールしてから、
virtualenvで環境を構築すると、少し楽・・・かもしれません。

コマンドで示すとこんな感じ。

# 2.6.6 と 2.5.5 をインストール  
$ pythonbrew install 2.6.6  
$ pythonbrew install 2.5.5  
  
# 2.6.6 を標準の環境に設定。  
$ pythonbrew switch 2.6.6  
$ pip install virtualenv  
  
# virtualenv を使って、2.6.6 環境のプロジェクトを作成  
$ virtualenv hoge2.6.6-proj  
  
# virtualenv を使って、2.5.5 環境のプロジェクトを作成  
$ virtualenv -p ~/.pythonbrew/pythons/Python-2.5.5/bin/python hoge2.5.5-proj  

1度、virtualenvを使い出したらそれで完結できるので、pythonbrew の出番は劇的に減りそうです。

使い方

インストール〜実行までを、コマンドを使って説明します。

まず、pythonbrew をインストールするために以下のコマンドを実行します。

$ curl -kLO https://github.com/utahta/pythonbrew/raw/master/pythonbrew-install  
$ chmod +x pythonbrew-install  
$ ./pythonbrew-install  

これで、~/.pythonbrew に pythonbrew 一式がインストールされます。

インストール先を変えたい場合は、環境変数 PYTHONBREW_ROOT にパスを設定してから、./pythonbrew-installを実行します。

$ export PYTHONBREW_ROOT=/path/to/pythonbrew  
$ ./pythonbrew-install  

インストールが成功すると、パス設定用のファイルが作成されるので、画面の指示通りそれらを読み込むよう.bashrcや.cshrcに設定を加えます。

$ vi ~/.bashrc  
source $HOME/.pythonbrew/etc/bashrc  

保存したら設定を一度読み直します。

$ source ~/.bashrc  

パスが通っているか確認します。

$ which pythonbrew  
~/.pythonbrew/bin/pythonbrew  

ここまでで、インストールは完了です。

続いて、pythonbrewを使ってPython-2.6.6をインストールします。

$ pythonbrew install 2.6.6  

完了したら、インストールしたPythonインタプリタを有効にする為に、switch します。

$ pythonbrew switch 2.6.6  
Switched to Python-2.6.6  

これで、インストールしたPythonが有効になります。

$ python  
Python 2.6.6 (r266:84292, Oct  4 2010, 00:38:36)   
[GCC 4.1.2 20080704 (Red Hat 4.1.2-46)] on linux2  
Type "help", "copyright", "credits" or "license" for more information.  
>>>  

後は、ご自由にどうぞ!

別バージョンのPythonインタプリタを使うときも、やることは同じです。

$ pythonbrew install 3.1.2  
$ pythonbrew switch 3.1.2  
Switched to Python-3.1.2  

これで、Python-2.6.6 と Python-3.1.2 環境のできあがり!

Macユーザで

MacPorts を使ってるひとは、python_select てのもあります!

更新履歴

2010.11.13 バージョン 0.5 用に加筆修正しました。
2010.12.3 gitのhttps化に伴い、curlコマンドのオプションを修正しました。

ご意見・ご要望・バグ報告

などなどありましたら、GitHub の Issues やコメント欄やtwitterまでよろしくです。