virtualenvでPythonの開発環境をプロジェクト毎にわける
環境:Max OS X 10.9.5
開発をするとき、プロジェクト毎にPythonのバージョンや依存するライブラリを分けたいことがある。
そういうときは、virtualenvを使いましょう。
こやつです。
Virtualenv — virtualenv 13.0.3 documentation
インストール
pip を使えば一発で入ります。便利な世の中になりました。
$ pip istall virtualenv
※ 2015/06/20 現在、特に何もしていないとvirtualenv 12.0.7が自動的に入ります。
最新版のvirtualenvをインストールしたい場合は、Githubリポジトリにある最新プロジェクトのtarballを直接指定します。
$ pip install https://github.com/pypa/virtualenv/tarball/develop
もし任意のバージョン(古いやつとか)のものを使用したい場合は、PyPIでvirtualenvと検索すると過去のバージョンが沢山でてくるので、そこから好きなバージョンのダウンロードページへ行ってtar.gzのリンクアドレスをコピー、以下の用にダウンロード・解凍して使えるようにします。
$ curl -O https://pypi.python.org/packages/source/v/virtualenv/virtualenv-X.X.tar.gz
$ tar xvfz virtualenv-X.X.tar.gz
$ cd virtualenv-X.X
$ python setup.py install
インストール時の注意点:
以下の環境でインストールすると、SSLを介さないでPyPIからダウンロードします。
・pip 1.3以下
・setuptools < 0.9.7の状態でeasy_installをする
まずはバージョンを確認したほうが良いです。
virtualenvを使ってみる
virtualenvを使いたいディレクトリへ移動して、virtualenvコマンドを叩きます。
すると、envというvmが勝手に作られます。
~ $ cd test_dir
test_dir $ virtualenv env
test_dir $ ls
env
さっそくsourceコマンドでenvに入るためのスクリプトを実行します。(このことをよくactivateする、という)
test_dir $ source env/bin/activate
(env):test_dir $
このようにactivateするとenv環境に入ります。さてここで pip install djangoしてみます。
(env):test_dir $ pip install django
~ 一生懸命Django君がインストールされる ~
pip list で ライブラリのリストを見れます。さっき入れたDjangoが入ってることを確認。
(env):test_dir $ pip list
You are using pip version 6.0.8, however version 7.0.3 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Django (1.8.2)
pip (6.0.8)
setuptools (12.0.5)
ここで、env環境に入った場合とそうでない場合の両方で $ pip list して、それぞれの環境で入っているライブラリが違うことを確認してみてください。
env環境を作成するとき、Pythonのバージョンを指定することもできます。
次の例では、env環境ではpython3をデフォルトで使いたい場合の設定手順です。
~ $ python -V
Python 2.7.9 # ローカル環境のpythonのバージョン
~ $ cd test_dir
test_dir $ which python3 # python3の場所を探す
/usr/local/bin/python3
test_dir $ virtualenv env --python /usr/local/bin/python3 # --python オプションで使用したいpythonのPATHを指定
test_dir $ ls
env
test_dir $ source env/bin/activate
(env):test_dir $ python -V # PATHで指定したpythonをデフォルトで使用するようになっている
Python 3.4.2
env環境から抜けたいときは、deactivateします。
(env):test_dir $ deactivate
こんな感じで、プロジェクト毎にPythonのバージョンやライブラリをわけることができるので便利です。