virtualenvとpipでPyPIパッケージをローカルインストールして使う

PythonPyPIパッケージをローカルインストールして使うには、virtualenvを使う。

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 12.04.2 LTS
Release:        12.04
Codename:       precise

まず、apt等のパッケージマネージャでvirtualenvをインストールする。 このとき、Python用のパッケージマネージャpipも一緒に入る。

$ sudo apt-get install python-virtualenv

適当なディレクトリに移動した後、次のようにすることでENV以下に仮想Python環境が作成される。

$ mkdir test
$ cd test/
$ virtualenv --distribute ENV
New python executable in ENV/bin/python
Installing distribute.............................................................................................................................................................................................done.
Installing pip...............done.

仮想Python環境を有効にするには次を実行する。 仮想環境に入っている間は、シェルのプロンプトに環境名が表示される。

$ source ENV/bin/activate

仮想環境に入った状態でpipコマンドを実行することで、ライブラリがローカルインストールされる。 たとえば、次の例では高機能対話シェルbpythonをインストールする。

(ENV)$ pip install bpython
Downloading/unpacking bpython
  Downloading bpython-0.12.tar.gz (130Kb): 130Kb downloaded
  Running setup.py egg_info for package bpython

    warning: no files found matching 'bpython/translations/*/LC_MESSAGES/bpython.mo'
Downloading/unpacking pygments (from bpython)
  Downloading Pygments-1.6.tar.gz (1.4Mb): 1.4Mb downloaded
  Running setup.py egg_info for package pygments

Installing collected packages: bpython, pygments
  Running setup.py install for bpython

    warning: no files found matching 'bpython/translations/*/LC_MESSAGES/bpython.mo'
    Installing bpython-urwid script to /home/user/tmp/test/ENV/bin
    Installing bpython script to /home/user/tmp/test/ENV/bin
    Installing bpython-gtk script to /home/user/tmp/test/ENV/bin
  Running setup.py install for pygments

    Installing pygmentize script to /home/user/tmp/test/ENV/bin
Successfully installed bpython pygments
Cleaning up...

(ENV)$ bpython

pip freeze -lは仮想環境内にインストールされているパッケージの一覧を出力する。 この出力をrequirements.txtというファイル名で保存しておけば、これを利用して別の環境で同一のライブラリを揃えることができる。

(ENV)$ pip freeze -l > requirements.txt
(ENV)$ pip install -r requirements.txt

仮想環境から抜けるには、deactiveコマンドを実行すればよい。

(ENV)$ deactivate

PyPIから入れられないパッケージについては、ファイル本体やgit等からインストールすることもできる。 次の例は、現時点でPyPIからのインストールに失敗するdpktをファイル本体からインストールする。

$ pip install https://dpkt.googlecode.com/files/dpkt-1.7.tar.gz