setuptoolsを使ってコマンドツールを作る

pasterでsetuptoolsを使った最小プロジェクトを作成する。

paster create hello

setup.pyを編集。
コマンドツールのスクリプトを追加する。
ここでは、helloモジュールのhello関数をpyhelloという名前のコマンドにする。
entory_pointsにconsole_scriptsセクションを作りその中に追加する。

from setuptools import setup, find_packages
import sys, os

version = '0.0'

setup(name='hello',
      version=version,
      description="",
      long_description="""\
""",
      classifiers=[], # Get strings from http://www.python.org/pypi?%3Aaction=list_classifiers
      keywords='',
      author='',
      author_email='',
      url='',
      license='',
      packages=find_packages(exclude=['ez_setup', 'examples', 'tests']),
      include_package_data=True,
      zip_safe=False,
      install_requires=[
          # -*- Extra requirements: -*-
      ],
      entry_points="""
      # -*- Entry points: -*-
      [console_scripts]
      pyhello = hello:hello
      """,
      )

setup.pyを変更したら、EGG_INFOを更新する。

python setup.py egg_info


hello.pyの中身。
普通のコマンドラインスクリプト

#
import sys
def hello():
    if len(sys.argv) > 1:
        print "Hello, %s!" % sys.argv[1]
    else:
        print "Hello, world!"

installしてもいいけど、developを使えば今編集しているソースツリーをsite-packagesから参照するようになる。

python setup.py develop

コマンドはプラットフォームごとに適当な方法で作成される。
Windowsなら、c:\Python25\Scripts 以下にpyhello.exeができているはず。
c:\Python25\Scripts にPATHを通してあるならそのまま pyhello と入力すれば実行できる。