Python 界でよく耳にする virtualenv なる代物について、使い方を備忘録します。なお使用環境は Mac OS X です。
virtualenv を一言で説明しろと言われれば Python 用の仮想環境だと答えることになりますが、「仮想マシン」のように大がかりなモノなのではありません。実は非常に単純なもので、雑な言い方をすると「Python のライブラリ等を格納するディレクトリをそっくり切り替えることで、各種パッケージのセットを丸ごと切り替えられるツール」だと理解すれば良いと思います。
何がうれしいのか
人によって違うと思いますが、私が感じたうれしい点は以下 2 つです:
1点目。本来は競合する(同時にインストールできない)パッケージを同一マシンで共存させることができ、また簡単に切り替えることができます。たとえば、執筆中のドキュメントが Sphinx のバージョン 1.1 とバージョン 1.2 の両方でビルドできるようにしたい場合、virtualenv があれば複数台のマシンを用意することなく簡単に動作検証できます。
2点目。仮想環境ディレクトリは自分のユーザディレクトリ下にも作成可能です。そのため OS を複数人で使用している場合、共用の Python 環境に一切影響を与えることなくお気に入りのパッケージを自由に入れられます。
使い方
使い方の要点を記します。
virtualenv 仮想環境名
で、その仮想環境で使用するファイル類を格納するディレクトリを作成source 仮想環境名/bin/activate
で仮想環境をアクティブ化deactivate
で仮想環境を無効化し、元に戻す
仮想環境をアクティブ化している間は、パッケージのインストールディレクトリ等がPython標準の場所ではなく上記で指定した仮想環境名のディレクトリ下に切り替わっています。そのため、その状態でパッケージをインストールした場合、システム共通のパッケージディレクトリは一切変更されずクリーンな状態を維持できます。
インストール方法
Python の一般的なパッケージと同じように pip または setuptools でインストールします。したがって pip が使える環境であれば普通に pip install virtualenv
でインストールできます。pip が使えない場合は、virtualenv のソース一式を展開して次のように setup.py を叩けばインストールできます。
$ tar xvfz virtualenv-X.X.tar.gz
$ cd virtualenv-X.X
$ sudo python setup.py install
なお、先に記した「共用の Python 環境に影響を与えない」というのは virtualenv で作った仮想環境へのパッケージインストール等の話です。virtualenv をシステム共用の Python 環境にインストールできない場合は、virtualenv をインストールせずにスクリプトとして実行する形で運用できるそうです。私自身の環境とは異なるので、詳細は割愛します。
使用例
最後に、使用例を記します:
$ which python
/usr/bin/python
$ virtualenv venv/sphinx-1.2.2
New python executable in venv/sphinx-1.2.2/bin/python
Installing setuptools, pip...done.
$ ls venv/sphinx-1.2.2
bin/ include/ lib/
$ ls venv/sphinx-1.2.2/bin
activate activate_this.py pip* python*
activate.csh easy_install* pip2* python2@
activate.fish easy_install-2.7* pip2.7* python2.7@
$ source venv/sphinx-1.2.2/bin/activate
(sphinx-1.2.2)$
(sphinx-1.2.2)$ which python
/Users/suguru/venv/sphinx-1.2.2/bin/python
(sphinx-1.2.2)$ python setup.py install
...
Installed /Users/suguru/venv/sphinx-1.2.2/lib/python2.7/site-packages/Sphinx-1.2.2-py2.7.egg
...
(sphinx-1.2.2)$ which sphinx-built
/Users/suguru/venv/sphinx-1.2.2/bin/sphinx-build
(sphinx-1.2.2)$ deactivate
$ which sphinx-built
「virtualenv (Python仮想環境)の使い方」への1件のフィードバック
コメントは受け付けていません。