YAMAGUCHI::weblog

海水パンツとゴーグルで、巨万の富を築きました。カリブの怪物、フリーアルバイター瞳です。

virutualenvとvirtualenvwrapperとpipを使う

はじめに

なにかテスト環境を作ったり、開発を行うときにパッケージをインストールしなければいけないけど、環境を汚したくないなっていうときにvirtualenvが便利だ、という話は前から聞いてたんですが必要に駆られるとときがなかったので使ってませんでした。
しかしようやくそういうときがやってきたので早速入れてみたんですがこれは便利すぎる!

参考

Google先生に聞いてみたら上位が全員PySpaな人でした。ちゃんちゃん。どうもありがとうございますー。

virtualenvとvirutalenvwrapperの設定

$ sudo easy_install virtualenv
$ sudo easy_install virtualenvwrapper

これでインストールはおしまい。次に設定。

$ cd ~
$ vim .bashrc
export WORKON_HOME=$HOME/.virtualenvs
. /opt/local/Library/Frameworks/Python.framework/Versions/2.6/bin/virtualenvwrapper.sh
$ mkdir .virtualenvs
$ . .bashrc
$ workon
*

これで完了。いよいよ仮想環境作りまくり!

$ mkvirtualenv testenv
(testenv) $

抜ける場合はdeactivateで。

(testenv) $ deactivate
$

もう一回入る場合はworkonで。

$ workon
testenv
$ workon testenv
(testenv) $

pipを使う

やったぜ!とか思ってたらeasy_installとvirtualenvがうまく連携されていないということでとても残念。そこでIanさんのエントリにあるみたいにpipを使う。

(testenv) $ easy_install pip

これで環境を汚さずにpipが入った。試しにパッケージを入れてみる。

(testenv) $ pip install django
Downloading/unpacking django
  Downloading Django-1.1.1.tar.gz (5.6Mb): 5.6Mb downloaded
  Running setup.py egg_info for package django
Installing collected packages: django
  Running setup.py install for django
    changing mode of build/scripts-2.6/django-admin.py from 644 to 755
    changing mode of /home/ymotongpoo/.virtualenvs/testenv/bin/django-admin.py to 755
Successfully installed django

本当に実環境が汚れてないかチェック。

(testenv) $ which django-admin.py
/home/ymotongpoo/.virtualenvs/testenv/bin/django-admin.py
(testenv) $ deactivate
$ which django-admin.py
$

仮想環境が邪魔になったらrmvirtualenvで消せばいい。

$ rmvirtualenv testenv

さらに仮想環境をさっと移植する

散々開発したあとにさてこの環境では何を使ってるかなと調べるときはpip freezeを使う。

$ pip freeze
(testenv)ymotongpoo@Miura:~$ pip freeze
Brlapi==0.5.3
Cheetah==2.0.1
CouchDB==0.6
Django==1.1.1
GnuPGInterface==0.3.2
...
virtkey==0.01
virtualenv==1.3.3
virtualenvwrapper==1.25
wadllib==1.1.2
wsgiref==0.1.2
xkit==0.0.0
zope.interface==3.5.2

一気に取れたー!あとはこれを適当にリダイレクトしてファイルにしておけば、新しく環境作る人が気持ちよくなれますね。

$ pip freeze > packages.txt
$ pip install -r packages.txt

もしネット環境がなければバンドルしてしまえ!

$ pip bundle -r packages.txt hoge.pybundle

バンドルしたファイルをインストールするときはpip installでそのまま指定すればいいです。

$ pip install hoge.pybundle

まとめ

  • virtualenv使うと環境が汚れない
  • virtualenvwrapper使うと仮想環境が簡単に作れるし管理できる
  • pip使うと簡単に環境の移行ができる

追記

古いバージョンでは virtualenvwrapper_bashrc を実行するように.bashrcなどに記述しますが、virtualenvwrapper 2.1では上記のように変わっています。