Python
Paver

Paver 応用編 - プロジェクトに組み込む

More than 5 years have passed since last update.

順番としては前後してしまうのですが、応用編です。

Paver 本体に組み込まれている minilib というコマンドを利用すると、 Paver のよく使う部分を zip にまとめたライブラリを作成することができます。これは30KB以下なので、プロジェクトにこのまま置いてしまえば、 Paver をインストールしていなくても Python がインストールされていれば使えるスクリプトにすることができます。
これはビルド・デプロイスクリプトなんかに便利ですね。

minilib を作る

$ paver minilib
---> paver.misctasks.minilib
Generate paver-minilib.zip
$ ls -lh
total 56
-rw-r--r--  1 inada-n  staff    26K  8 27 21:15 paver-minilib.zip

これでできた paver-minilib.zip をソース配布物に組み込むか、バージョン管理に入れてしまえば、 Paver をインストールしていない人でも利用できるようになります。

minilib を使ったスクリプトを書く

Paver をインストールしていない場合、 paver コマンドが利用できないので、 pavement.py を自力で実行できるようにしてやる必要があります。どうせなのでもっと短い名前もつけてしまいましょう。今回は pave という名前にしてみます。

pave
#!/usr/bin/env python
# coding: utf-8
import sys
import os

# minilib にパスを通す.
sys.path.append(os.path.join(os.path.dirname(__file__), 'paver-minilib.zip'))

from paver.easy import *

@task
def hello():
    print "hello"

if __name__ == '__main__':
    # -f filename で pavement.py 以外のファイルを指定できる事と、
    # sys.argv[0] が実行したスクリプトファイル名である事を利用する.
    tasks.main(['-f'] + sys.argv)
$ chmod +x pave
$ ./pave hello
---> pavement.hello
hello