ずっとActivePythonにお世話になってきたけど、いろいろなマイクロプロジェクトが出来上がってきたので、より柔軟にpythonのバージョンやパッケージ管理がしたくなって、pythonbrewと、virtualenvを利用した環境に移行しました。
ここではその覚書を書いて、リマインダとしておきます。なお、全部ターミナルで実行するので、guiでやりたい人は読んでも意味ありません。
(なので、指摘は歓迎ですが、この通りにやったけど、うまくいかなかったと文句言われても困ります)
追記(2013/10/02):
pythonbrewは作者が開発を続けないことをアナウンスしているので、時代遅れになりつつある。とはいえ、後継で開発が続いているpythonzは思想が異なることと、macでの仕様では
pythonbrewの方が使いやすいことから、この事実を知った後でも、pythonbrewにする価値はあるように思う。
0. これまでの環境とのお別れ
これまでお世話になったActivePythonの弔いをします。
上記のページに基づいて、以下のコマンドを実行して、ActivePythonをアンインストールします。
$ sudo /Library/Frameworks/Python.framework/Versions/2.6/Resources/Scripts/uninstall
2.7の場合は、パスの真ん中くらいにある2.6の部分を2.7にすればOK.
- pythonbrewのインストール
ここからは、以下のページを参考に進めました。
サクサクっと入れます。
$ curl -kLO https://github.com/utahta/pythonbrew/raw/master/pythonbrew-install
$ chmod +x pythonbrew-install
./pythonbrew-installパスを通すために、以下の一行を~/.bashrcに加えます。
csh, tcsh, zshの人はそれぞれのrcファイルに加えましょう。
source ~/.pythonbrew/etc/bashrc
そのまま進む場合は、~/.bashrcをリロードしましょう。
$ source ~/.bashrc
2. pythonbrewによるPythonのインストール
ここでは、一つのpythonのバージョンしかインストールしませんが、pythonbrewによって、いろいろなバージョンのpythonのインストールと、アクティブなpythonのバージョンの切り替えができます。リンクページに載っているので興味ある人は参照してください。
$ pythonbrew install 2.7.2 --framework
$ pythonbrew switch 2.7.2
※macユーザの場合は、--frameworkのオプションを付けておいた方が良いと思われます(このオプションmacしかないはず)。つけてないと、バリデーションなどでひっかかってパッケージが使えなくなることがあります。
※ビルド時にビルドが失敗することがある。原因を探っていくと、xcodeのライセンスAgreementをしていないことが原因だと言われているので、以下のコマンドで、xcodeのライセンスの承認をして上げる必要がある場合がある。
$ sudo xcodebuild -license
3. virtualenvの導入
virtualenvはpythonを実行するときのパッケージ群などの環境を仮想的に用意することができるソフトです。
ピンと来ないかもしれませんが、pythonのバージョン管理や、パッケージの依存関係解決って割とラフにできているので、このパッケージのこのバージョンの組み合わせでは動くけど、他では動かないっていうことが時々あります。そのたびに、パッケージの再インストールをしていたのではたまらないので、ヘビーユーザにとっては必須なソフトです。
$ pip install virtualenv
$ pip install virtualenvwrapper
4. 実践編
これで、終わりですが、最後に簡単なvirtualenvの使い方をば
$ virtualenv sandbox
$ cd sandbox
$ source bin/activate
(sandbox) $ pip install numpy
(sandbox) $ python
Python 2.7.2 (default, Sep 26 2013, 15:18:47)
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
(sandbox) $ deactivate
$ python
>>> import numpy
Traceback (most recent call last):File "<stdin>", line 1, in <module>ImportError: No module named numpy
上記では、sandboxというディレクトリに仮想環境を構築しています。構築した仮想環境を使用するためには、仮想環境の中のbin/activateというファイルを(sourceで)読み込みます。読み込んだ後は(環境名)というプレフィックスがついた状態になります。この状態でインストールしたパッケージはその仮想環境ではインストールされますが、仮想環境中で使えるdeactivateというコマンドでもとに戻った環境においてはインストールされていません。
このように仮想環境を使い分けることでより柔軟なソフト開発が可能になります。pythonヘビーユーザさんは是非どうぞ。ソフトウェアのテスト時の依存関係チェックにも便利です。
とはいっても、大抵のヘビーユーザは使っていると思うので、遅れているのは私だけでしょうね・・