Python
Mac
Ubuntu

virtualenvでpython環境を管理する


はじめに

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

Macはpipは最初から使えるはず。

# virtualenv / virtualenvwrapperのインストール

$ sudo pip install virtualenv
$ sudo pip install virtualenvwrapper


setup

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

$ vim ~/.basrhc  # 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で差分を見てみると、いろいろ新しく追加されている。

(hoge)$ git status

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


おしまい

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