Help us understand the problem. What is going on with this article?

virtualenvでpython環境を管理する

More than 1 year has passed since last update.

はじめに

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

おしまい

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

caad1229
自転車とUbuntuが好きです。
http://caad1229.hatenablog.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした