はじめに
なにかテスト環境を作ったり、開発を行うときにパッケージをインストールしなければいけないけど、環境を汚したくないなっていうときにvirtualenvが便利だ、という話は前から聞いてたんですが必要に駆られるとときがなかったので使ってませんでした。
しかしようやくそういうときがやってきたので早速入れてみたんですがこれは便利すぎる!
参考
- virtualenv, virtualenvwrapper, pip を使う方法 - Ian Lewis
- virtualenvwrapper のフックスクリプト - SPEAKER BREAKA
- pip って何(・ω・ ) - Djangoへの片思い日記
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では上記のように変わっています。