2011年7月11日月曜日

VIRTUALENV について

今回、virtualenv について簡単に触れてみようと思います。

virtualenv については、既にサイトやブログで紹介しているところが多い。私も幾つかの記事を読んでみたが、「どうもイマイチわからない」 という状態だった。

しかし実際に使ってみると、かなり便利だということがわかってきた。このため、『メモ書き+α』 レベルで virtualenv について書いてみる。

virtualenv の機能

virtualenv は Python の仮想環境を提供する。こう書くと、 「あれ、Python の環境自体が仮想ではないの?」 と思う人がいるかもしれない。実は私もそう思いました・・・。

もう少し付け足して書くと、virtualenv は Python のいろいろな実行環境を仮想的に提供する、と言っていいだろう。

「いろいろな実行環境」というのは、バージョンの違う Python実行環境のことを指しているし、同一バージョンでもインストール済みモジュールが違う環境のことも示している。

実際に virtualenv を導入し、使用したのが左のイメージになる。

左上のコマンドプロンプトは、仮想環境でなくデフォルトの Python を使用している。他のウィンドウは、virtualenv で設定した Python 仮想環境を使用している。

各ウィンドウの Python のバージョンと、導入済みのモジュールが全部違うのを確認できる。

virtualenv の活用方法としてまず考えられるのは、テスト環境の構築である。ただ私個人では、テスト環境構築に virtualenv を活用するというのはあまり考えていない。

開発では主に Python 2.5 を利用しているのだが、Python 2.7 や Python 3.2 がリリースされてから、2.5 より高いバージョン向けにパッケージ化されたモジュールが多くなった。これらのモジュールを試したり、ソースを一部修正したい場合に、他のバージョンの Python を使う時がある。そんな時 virtualenv を使えば便利だなと思う。

virtualenv 導入での考慮点

記事の始めの方にも書いたが、virtualenv に関する記事は分かりにくいものが多い。これには理由がある。多くの記事で、virtualenv と共に virtualenvwrapper の説明がされているからである。

virtualenvwrapper は virtualenv を使いやすくするツールではあるが、一つ大きな問題がある。virtualenvwrapper は Windows ではそのままでは動かない(インストールは可能)。 virtualenvwrapper は bashスクリプト を使っているため、Unix系OSでしか動かない。Windowsで動かすためには、Cygwin 等の導入が必要である。

今回は難しいことは考えず、virtualenv だけを説明する。ときどき使用する程度なら virtualenv のコマンドを直接使うのも、それほどは不便ではないからである。

もし Windows で virtualenvwrapper のようなツールを使いたい場合、env.py といったものもあるようである。
参考: Ehrenの日記 - Windowsでもvirtualenvwrapperっぽい環境をつくる

virtualenv の導入

virtualenv の導入は簡単である。pip を利用し次のコマンドでインストールする。

pip install virtualenv

Python3 系でも pip コマンドで virtualenv のインストールは完了する。しかし現在の virtualenv 1.6.1 には問題があるようだ。仮想環境を作成するときにエラーが出て止まってしまう。
参考: github - pypa/virtualenv - Multiple Python 3 issues

これは distribute0.6.19 を使っている場合に起こるようだ。Python3 で同様のエラーが出た場合、次のサイトから修正版をダウンロードし、Python setup.py install で virtualenv をインストールする必要がある。
修正版: github - pnasrat/virtualenv - Virtual Python Environment builder

virtualenv の利用
仮想環境の作成
コマンドラインから次のコマンドで仮想環境を作成する。
virtualenv DEST_DIR
 もしくは
python virtualenv.py DEST_DIR
DEST_DIR は作成する仮想環境フォルダの名前。例えば DEST_DIR に python_test と指定すると、現在のフォルダ下に python_test が作成され、その中に仮想環境が構築される。DEST_DIR は絶対パスでの指定も可能。
virtualenv --no-site-packages DEST_DIR
--no-site-packages オプションを付けると、インストール済みのモジュールを全て外した状態で仮想環境が作成される。
 
仮想環境の実行
仮想環境を実行するためには、コマンドラインで作成した 仮想環境フォルダ に移動する。さらにフォルダ内の scripts フォルダに移動し、次のコマンドを実行する。
activate 
仮想環境を実行すると、仮想環境作成で指定したフォルダ名が括弧に入って表示されるようになる。

 
仮想環境の停止
コマンドラインで作成した仮想環境フォルダ下の scripts フォルダに移動し、次のコマンドを実行する。
deactivate 

 

参考: ウノウラボ - 2009年版Python開発環境を整えよう