ホーム >  Python >  virtualenvでpython環境を管理


Posted:2017/01/09 9:00:40 AM|Category : Python

virtualenvでpython環境を管理

virtualenvを使って、pythonのための仮想環境を作成します。

virtualenvとは?

Pythonの独立した環境を構築するモジュールです。virtualenvは開発用のサンドボックスを作成し、pythonバイナリやパッケージを分離してくれます。 一つの開発機で複数の環境を簡単に管理することができます。つまり、virutalenvで環境を作ってそちらにインストールして試せば、システム環境は無傷で使えます。いくつも環境が作れ、pythonのバージョンで分けたりと色々と便利です。

Virtualenvwrapperとは?

Virtualenvだけでも十分に簡単に使用できますが、wrapperを導入することで各環境の管理、切り替えが簡単になります。virtualenvのwrapperという意味で、virtualenvをより使いやすくしてくれるツールです。Windowsには対応しておらず、LinuxとMac限定のツールとなっています。また、Python3.x系にも対応しています。

  • すべてのvirtualenv 環境を一元管理できる
  • 便利なコマンド
  • 環境の切り替えがコマンドひとつ
  • タブによるコマンド補完
  • カスタマイズ可能なフック
  • 拡張機能も自由に開発可

仮想環境のメリット

本来は競合する(同時にインストールできない)Pythonのパッケージを同一マシンで共存させることができます。また簡単に切り替えることができます。たとえば、Sphinx のバージョン「1.1」とバージョン「1.2」の両方でビルドできるようにしたい場合、virtualenv があれば複数台のマシンを用意することなく1台で動作検証できます。

仮想環境ディレクトリは自分のユーザディレクトリにも作成可能です。複数人で1つのOSを使用している場合、共用のPython 環境に一切影響を与えることなくお気に入りのパッケージを自由に入れられます。

準備

①Pythonとpipは以下を参考にして下さい。

UbuntuにPythonとpipをソースビルドでインストールする

pipコマンドの非推奨について。

pip listコマンドを実行すると非推奨(DEPRECATION)が表示される

私の環境

OS Ubuntu 16.04.1 LTS 64bit
python 2.7.9
pip 9.0.1

virtualenvインストール

①「virtualenv」をインストールします。

sudo pip install virtualenv

②「virtualenv」のバージョン確認をします。

virtualenv --version

virtualenv使用

①まず、virtualenv環境(ここではenv)を作成します。以下のコマンドを入力し、カレントディレクトリに「env」を作ります。

virtualenv env

以下のように表示されます。※xxxxxはユーザ名が表示されます。

New python executable in /home/xxxxx/env/bin/python
Installing setuptools, pip, wheel...done.

②作成されたenvを確認します。

ls env
bin  include  lib  pip-selfcheck.json

env以外のかつて作った仮想環境を表示します。私はホームディレクトリからlsで一覧を表示しました。

cd
ls ~/.virtualenvs/ -l
drwxrwxr-x 5 username username 4096  1月  9 12:02 my_env
drwxrwxr-x 5 username username 4096  1月 11 11:43 my_env3
drwxrwxr-x 5 username username 4096  1月 26 15:11 webapp

③env環境を有効化します。bashスクリプトのenv/bin/activateをsourceコマンドで実行します。

source env/bin/activate

有効化するとプロンプトの前に環境名「(env)」が表示されます。そして、環境変数PATHの先頭に「env/bin」が追加され、virtualenv環境のPythonが実行されます。

(env) xxxxx@xxxxx-dynabook-R731-C:~$ 

④例として、requests(HTTPクライアントのパッケージ)をpipでインストールします。requestsが、「env/lib/python2.7/site-packages」配下にインストールされます。

pip install requests

※pipコマンドのとき、sudoで実行しないように気をつけましょう。sudoを使うとPATHが異なるため、仮想環境外のpipを実行してしまう可能性があります。

以下のように表示されます。

Collecting requests
  Downloading requests-2.12.4-py2.py3-none-any.whl (576kB)
    100% |████████████████████████████████| 583kB 1.1MB/s 
Installing collected packages: requests
Successfully installed requests-2.12.4

⑤pythonを実行してみて、インポートできるか確かめます。Pythonパッケージの中にはコマンドとして実行可能なファイルが含まれている場合があります。

python
>>> import requests
>>> 

⑥無効化する場合は、以下のようにコマンドを入力します。

deactivate 

virtualenvwrapperインストール

virtualenvwrapperを入れると次のコマンド(抜粋)が使えるようになります。

  • mkvirtualenv(virtualenvを作る)
  • cdvirtualenv(virtualenvに移動する)
  • workon(virtualenv環境で仕事する)

①「virtualenvwrapper」をインストールします。

sudo pip install virtualenvwrapper

②コマンド(virtualenvwrapper.sh)が存在するか、念の為検索します。

which virtualenvwrapper.sh

以下のように表示されます。

/usr/local/bin/virtualenvwrapper.sh

※virtualenvwrapper.sh は virtualenvwrapper を有効化するためのシェルスクリプトです。システムのPythonと同じディレクトリに virtualenvwrapper を入れた場合は「/usr/local/bin」あたりにあることが多いようです。

③これだけだとvirtualenvwrapperが使われないので、個人設定の「.bashrc」を編集します。vimで「bash_profile」を編集します。

vim ~/.bash_profile

※vimをインストールしていない場合は、以下を実行します。

sudo apt-get install vim

末尾に以下のような記述を追加します。これで「.bash_profile」->「bashrc」の順に実行されます。

if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

④vimで「bash_profile」を編集します。

vim ~/.bashrc

末尾に以下のような記述を追加します。virtualenvのトップディレクトリとなるWORKON_HOMEも書いておきます。

source /usr/local/bin/virtualenvwrapper.sh
export WORKON_HOME=~/.virtualenvs
export PROJECT_HOME=$HOME/dev/virtualenv

※「~/.bashrc」は、ユーザ個別の設定ファイルで、bash 起動時に読み込まれます。場所は、GUIでは見えませんが、「/home/username/」に存在します。

※共通設定の場合は、「/etc/.bashrc」ではなく「/etc/bash.bashrc」に書きます。

※WORKON_HOME は virtualenv 環境を一元管理するディレクトリを指定するための変数です。ここではユーザホーム直下の 「.virtualenvs」というディレクトリを使っていますが、場所は任意で結構です。$HOME直下に専用のディレクトリを作ってそこにいれると便利です。

⑤「bashrc」の変更内容を反映させます。

source ~/.bashrc

virtualenv+virtualenvwrapperの使用

①「webapp」という名前のサンドボックスを作成します。

mkvirtualenv webapp

②virtualenv環境を一覧表示します。①で「webapp」を作成しましたので1件表示します。

workon

以下のように表示されます。

webapp

③virtualenv環境に入ります。

workon webapp

virtualenv環境を削除する場合は、以下のようなコマンドを入力します。

rmvirtualenv webapp

virtualenv環境から抜ける場合は、以下のようなコマンドを入力します。

deactivate

その他の使い方

・サンドボックスの削除

一度入った固有環境からシステム(グローバル)に抜けたい場合はdeactivateコマンドを打ちます。

deactivate

・サンドボックスの削除

仮想環境をシステム(グローバル)へ一度抜けます。その後、以下のコマンドでサンドボックスを削除します。

rmvirtualenv 環境名

トラックバック用のURL
プロフィール

名前:イワサキ ユウタ 職業:システムエンジニア、ウェブマスター 誕生:1986年生まれ 出身:静岡県 特技:ウッドベース 略歴 2008年04月 金融機関系I

最近の投稿
人気記事
カテゴリー
広告