Python の virtualenv で作る Titanium 用仮想環境
Titanium CLI や Alloy は全て node.js を基盤として作られています。主観では Titanium 開発者は Mac を使っている人が多く、 Mac で node.js の環境を整えるのに Homebrew を使っている人も多いと勝手に思っています。
Homebrew は非常に使い勝手が良いのですが、様々なソフトウェアやライブラリを Homebrew でインストールして環境を整え、ふと、
brew update && brew upgrade
をやったときに思いがけず node.js がバージョンアップされてしまうことがあります。 node.js を基盤に作られたソフトウェアは node.js のバージョンに依存していることが多く、 Titanium CLI や Alloy もその例に漏れません。つまりは動かなくなってしまいます。今回は node.js の管理を Python の virtualenv を使って行い、想定したシーンに合わせて node.js 環境を切り替える方法を紹介します。
Python と virtualenv
Python は言わずもがな有名な LL 言語です。日本ではよく Ruby と比較されることがありますが、それはさておいて、簡潔な記法と幅広い用途に使える汎用性から世界的に人気のあるプログラミング言語です。
# coding: utf-8 from __future__ import print_function def hello(name): print(u"Hello! " + name) if __name__ == "__main__": hello(u"Titanium") # Hello! Titanium
OS X Mountain Lion を使っているのであれば、 Python 2.7.2 がインストールされていると思います。 Python には easy_install や pip というパッケージ管理の仕組みが用意されており、これらを使うとモジュールを追加したり、管理したりすることを簡単に行えます。
Ruby には gem があり、これを Bundler でさらにラップすることでアプリケーションごとのモジュール管理を簡単にしていますが、 Python には virtualenv という Python の仮想実行環境を作るための仕組みがあり、これを使うと必要に応じてクリーンな Python 実行環境を構築することができます。
Mountain Lion の Python には easy_install のみインストールされているので、先に pip をインストールしてから virtualenv をインストールします。
sudo easy_install -U pip sudo pip install -U virtualenv virtualenvwrapper
virtualenv と virtualenvwrapper をインストールした後は、 .bashrc
や .bash_profile
、 .profile
などに
# virtualenv export WORKON_HOME=$HOME/.virtualenvs export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python source `which virtualenvwrapper.sh`
を追記します。これで準備は完了で、端末を立ち上げ直すなどして virtualenv --version
が動作するか確かめてください。
仮想環境を作る
次に mkvirtualenv
を使って仮想環境を作ります。ここでは titanium という名前で仮想環境を作ります。
mkvirtualenv titanium
これだけです。仮想環境の作成に成功すると、 workon
というコマンドで仮想環境に入れるようになります。
workon titanium
仮想環境に入ると端末の行頭に仮想環境の名前が表示されるようになります。仮想環境から抜け出すには deactivate
というコマンドを使います。
/Users/ryugoo% workon titanium (titanium)/Users/ryugoo% deactivate /Users/ryugoo%
nodeenv で Titanium 用の仮想環境を作る
titanium
仮想環境を作ったら、これに入ります。仮想環境では既に easy_install も pip も使える状態になっているので、 pip を使って nodeenv パッケージをインストールします。 nodeenv は virtualenv と連携して node.js 用の仮想環境を作ることができるミドルウェアです。
pip install -U nodeenv
sudo
は付けていません。これは .bashrc
などに追記した内容で仮想環境の作成先をユーザーディレクトリの .virtualenvs
に設定しているからです。もしも仮想環境の作成先を sudo
が必要な場所に設定したのであれば、 pip も同様に必要になります。 nodeenv のインストールに成功すると nodeenv
コマンドが使えるようになります。もしもコマンドが見つからなければ端末にログインしなおしたり、 exec $SHELL -l
などを使ってください。
nodeenv --version
nodeenv は今現在入っている仮想環境に対して node.js の環境を構築することができます。環境を構築するときには node.js のバージョンを指定することも可能です。ここでは node.js 0.8.22 を仮想環境 titanium に登録してみます。
nodeenv -p -n 0.8.22
上のコマンドを実行すると指定したバージョンの node.js のインストールが始まります。ソースからビルドするので時間がかかります。まったりと待ちましょう。インストールが終わると node
コマンドと npm
コマンドが使えるようになっているはずです。
node -v # v0.8.22 npm -v # 1.2.14
あとは npm を使って Titanium CLI や Alloy をインストールすれば良いわけですね。
npm -g install titanium npm -g install alloy
Titanium ベータ用の環境を作る
virtualenv を使って node.js の環境を構築するメリットは Titanium CLI や Alloy のベータ版環境を簡単に構築できるところにあります。先日も Titanium 3.1.0 のベータ版が登場し、インストール方法が公開されましたが安定版との排他インストールが必要でした。 virtualenv と nodeenv を使えば簡単にベータ版用の環境を作成することができます。
mkvirtualenv titanium_beta workon titanium_beta pip install -U nodeenv nodeenv -p -n 0.10.3 npm install -g alloy@1.1.0-beta npm install -g titanium@3.1.0-beta
あとは titanium
や titanium_beta
仮想環境を workon で往き来すれば、簡単に安定版やベータ版を切り替えることが可能です。
CODESTRONG!