読者です 読者をやめる 読者になる 読者になる

setup.pyでコンソールスクリプトを作る

Python

setup.pyのentry_pointsに、

setup(
      entry_points="""
      # -*- Entry points: -*-
      [console_scripts]
      mobilejp_mail_command = mobilejp.mail.command:main
      """,
      )

のように、

コマンド名 = モジュール名:関数名

を書いておくと、setup.py installを実行した時に、Pythonホームディレクトリのbinに指定した名称のコマンドが作られる。例えば、Pythonホームディレクトリが/usr/localだとすると、上記のsetup.pyでインストールすると、/usr/local/bin/mobilejp_mail_commandというスクリプトがインストールされる。
中身は次のような感じになる。

#!/usr/local/bin/python
# EASY-INSTALL-ENTRY-SCRIPT: 'mobilejp==0.1','console_scripts','mobilejp_mail_command'
__requires__ = 'mobilejp==0.1'
import sys
from pkg_resources import load_entry_point

sys.exit(
   load_entry_point('mobilejp==0.1', 'console_scripts', 'mobilejp_mail_command')()
)


site-packagesのEGGを削除して、代わりに開発ディレクトリにpthを張りなおしても動作したので、どこからエントリ・ポイントの情報を読んでいるんだろうと思ったら、開発ディレクトリのegg-info(上記の例だと、mobilejp.egg-info)からだった。