読者です 読者をやめる 読者になる 読者になる

Pythonbrewとvirtualenvは何が違うのか

Python

参考:API Only - Stack Exchange

僕はPythonの環境管理にvirtualenvを使っているが、Pythonbrewも一応インストールされている。
一体二つは何が違うんだ?とふと気になったので調べたら、上記のページが見つかった。

pythonbrewの特徴

perlbrewやrvmを使っている人は、それを思い浮かべて欲しい。
pythonbrewを使って例えばPython2.7をインストールした場合、ホームディレクトリ以下に全く新しいPythonインタプリタがインストールされる。
そのため、インストールの度に新しく構築するので時間がかかる。
しかしながら、操作がホームディレクトリ以下で完結するため、何かしらの理由から/usr/local/binなどにアクセスできないような環境でも問題ない。
今更感はあるが、例えばサクラのレンタルサーバなどではpythonbrewが使いやすいかも知れない。

virtualenvの特徴

pythonbrew(やperlbrew、rvm)と違い、インタプリタ自体は共有され、モジュールなどの環境だけがホームディレクトリ以下に作られる。
そのため、目的のインタプリタのバージョンが既にインストールされているなら、virtualenvで新しい環境を構築するのは一瞬出終わる(シンボリックリンクを張るだけ)
しかし、上で書いたように/usr/local/binなどにインタプリタをインストールできない場合は、virtualenvを利用することはできない。

結局どっちを使えばいいのか?

参考リンクの回答者は、普通はvirtualenvを使って、どうしてもvirtualenvだとダメな場合はpythonbrewを使う、ハイブリッド方式を示唆している。本人はそんなことしない(おそらくvirtualenvのみ使ってる)らしいが。