PyPIにコマンドとしてパッケージを登録するまで
AnsibleやAWSコマンドラインインタフェース等、Pythonでコマンドライン上で操作できるツールやライブラリは幾つかありますが、どのような仕組みでPyPIに登録するものなのかを調べてみました。
以下では、自作しているパッケージを中心に説明していきます。
使い方はまた別の記事に書く予定なので、今回はあくまでPyPIへの登録までの流れを記載していきます。
ディレクトリ構成

今回はbinディレクトリにコマンドラインスクリプトを格納します。
setup.py
パッケージのビルドや配布、インストール等の中心の動作となるスクリプトです。
setup(
name="msgiver", # パッケージ名
version="0.1.7.1", # バージョン
url="https://github.com/kitaro-tn/msgiver", # パッケージのHP
scripts=["bin/msgiver"],
license="MIT",
test_suite="msgiver",
author="Tatsunori Nishikori",
author_email="tora.1986.tatsu@gmail.com",
description="msgiver will deliver the text to Messenger",
long_description=readme,
install_requires=install_requirements,
packages=find_packages(exclude=("tests", "tests.*")),
classifiers=[
'Programming Language :: Python :: 2',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.3',
'Programming Language :: Python :: 3.4',
'License :: OSI Approved :: MIT License',
],
# package_data={},
)
必須項目
- name
- version
- url
- author/maintainer
- author_email/maintainer_email
依存パッケージ
requiresにArrayで依存パッケージを指定します。
long_description
PyPIのパッケージ上で表示される説明文で、Markdown形式は対応しておらず、reST形式で記述する必要があります。
reStructuredText入門 — Python製ドキュメンテーションビルダー、Sphinxの日本ユーザ会
scripts
コマンドライン上で実行可能なスクリプトのパスを指定することで、パッケージ内にスクリプトを含めることが出来ます。 スクリプト内で、作成したモジュールをimportして呼び出すことが可能で、ここで初めて、実際にユーザからコマンドラインとして扱うことが可能になります。
MANIFEST.in
マニフェストテンプレートと呼び、その他パッケージに必要なファイルを1行づつ記述します。
4. ソースコード配布物を作成する — Python 3.6.1 ドキュメント
その他詳しい設定項目は、下記ドキュメントを参照してください。