虹とトルネード

趣味のこととか少し技術的なこととかメモします

python virtualenv

pythonにはvirtualenvという仮想環境が簡単に作れるモジュールがある。お試しに何かモジュールをインストールしたい場合、virutalenvで環境を作ってそちらにインストールして試せば、システム環境は無傷で使える。いくつも環境が作れるのでpythonのバージョンで分けたりと色々と便利なのだ。 気に入らなければその環境を消すか使わなければいいだけ。

virtualenvとそれを簡単に管理できるvirtualenvwrapperをセットで導入するのが便利なのでそちらをメモ。

  • ubuntu14.04
  • Mac OSX Yosemite(10.10.3)

install and setup

ubuntu

# pipがなければインストール
$ sudo apt-get install python-pip
# pythonを使うなら依存関係でエラーが出るかもしれないのでこちらもインストール
$ sudo apt-get install python2.7-dev

# virtualenv / virtualenvwrapperのインストール
$ sudo pip install virtualenv
$ sudo pip install virtualenvwrapper

mac

Macpipは最初から使えるはず。

# virtualenv / virtualenvwrapperのインストール
$ sudo pip install virtualenv
$ sudo pip install virtualenvwrapper

setup

virtualenvwrapperを使うには以下のスクリプトbashrcに追加する必要がある。

$ vim ~/.basrh  # macは`~/.bash_profile`
    source /usr/local/bin/virtualenvwrapper.sh
    export WORKON_HOME=~/.virtualenvs

使ってみる

作成

オプションは色々とあるが、システムのまっさらな状態で使ってみたいので、基本的に自分は--nosite-packageのみつける。

# mkvirtualenv <option> <環境名>
$ mkvirtualenv --no-site-package hoge
    # --never-download        : ネットワークからDLをしない
    # --system-site-packages  : インストール済みモジュールを使用する
    # --no-site-packages      :  インストール済みモジュールを全て外した状態で仮想環境が作成される

# 作成されるとコマンドプロンプトに一番左に環境名が追加される
(hoge)$

作成した環境ディレクトリを確認

  • 環境ディレクトリに移動
(hoge)$ cdvirtualenv
# ディレクトリを調べてみる
(hoge)$ pwd
    /home/hoge/.virtualenvs/hoge
# 中身はこんな感じ
(hoge)$ ls
    bin  include  lib  local

モジュールをインストールしてみる

  • gitでバックアップをとって他のモジュールをインストールしてみる
# 環境全体をローカルgitにコミットしておく
(hoge)$ git init; git add -A; git commit -a -m "init"
# 何かと便利な`Twisted`モジュールをインストールしてみる
(hoge)$ pip install twisted
  • gitで差分を見てみると、いろいろ新しく追加されている。
     On branch master
    # Untracked files:
    #   (use "git add <file>..." to include in what will be committed)
    #
    #  bin/cftp
    #  bin/ckeygen
    #  bin/conch
    #  bin/lore
    #  bin/mailmail
    #  bin/manhole
    #  bin/pyhtmlizer
    #  bin/tap2deb
    #  bin/tap2rpm
    #  bin/tapconvert
    #  bin/tkconch
    #  bin/trial
    #  bin/twistd
    #  lib/python2.7/site-packages/Twisted-15.1.0-py2.7.egg-info/
    #  lib/python2.7/site-packages/twisted/
    #  lib/python2.7/site-packages/zope.interface-4.1.2-py2.7-nspkg.pth
    #  lib/python2.7/site-packages/zope.interface-4.1.2-py2.7.egg-info/
    #  lib/python2.7/site-packages/zope/
    #  pip-selfcheck.json
    #
  • 早速インストールしたモジュールを使ってみる
# importできる
(hoge)$ python -c "import twisted"
  • 環境を離れて使ってみる
# 環境の停止
(hoge)$ deactivate
# 元のシステムで使ってみるとエラーが出る
$ python -c "import twisted"
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
    ImportError: No module named twisted

これにより、システム環境にはインストールされていないことがわかる。

よく使うコマンド一覧

deactivate : 環境の停止

# 環境の停止
(hoge)$ deactivate
$

workon : 環境に移行する

すでに環境があるならばworkonコマンドでその環境に移行することができる

$ workon hoge
(hoge) $

lssitepackages : インストールしたパッケージ一覧

(hoge)$ lssitepackages
    Twisted-15.1.0-py2.7.egg-info  pip-6.1.1.dist-info        zope
    _markerlib                     pkg_resources              zope.interface-4.1.2-py2.7-nspkg.pth
    easy_install.py                setuptools                 zope.interface-4.1.2-py2.7.egg-info
    easy_install.pyc               setuptools-15.0.dist-info
    pip                            twisted

rmvirtualenv : 環境を消す

フォルダをまるごと消しても事は済むのだが、もちろん環境を削除するコマンドもある。

$ rmvirtualenv hoge

おしまい

これ使っていていいのは、色々と試しても環境ごと削除すれば綺麗さっぱりできる。ドジな自分にはもってこいな環境なのである (;^_^