Pythonプログラムのパッケージ化

以下の手順にて、パッケージを作成します。
ここでは、テスト用サンプルプログラムをパッケージ化することにします。

独自開発環境の作成

$ virtualenv myenv ※myenvは、独自開発環境のディレクトリ。何でもよい。

独自開発環境の設定を有効にする

$ cd myenv ※開発環境ディレクトリに移動する
$ source bin/activate ※独自開発環境のコマンドを有効にする

これで、pythonコマンドやpipコマンドを打ち込むと、myenv/bin/直下のプログラムファイルが実行されるようになります。

PasteScriptのインストール

PasteScriptは、Pythonプログラムをパッケージ化するためのツールです。

$ pip install PasteScript

パッケージの作成

$ paster create -t basic_package htmlele ※htmleleはパッケージ名

エントリーポイントの設定

インストールしたときにコマンドとして使えるプログラムを設定する。

■htmlele/setup.py

      # コマンド名 = パッケージディレクトリ.ソースファイル:関数名
      entry_points="""
      [console_scripts]
      mypackage = mypackage.init:main
      """,

プログラムファイルの作成

mkpage.pyを以下の位置に作成する。

mypackage(パッケージルートディレクトリ。pasterコマンドで作ったやつ)
├── mypackage
│   ├── __init__.py
│   └── init.py
├── setup.cfg
└── setup.py

■init.pyの内容(サンプル)

def main():
    print('mypackageを起動します')

パッケージの作成

パッケージルートディレクトリ(mypackage)で以下のコマンドを入力する。

$ python setup.py bdist_egg

distディレクトリが生成され、その中に.eggファイルが作成される。

[訂正] 2018/05/11
『エキスパートPython 改訂第2版』P.177によれば、最近のPython界隈ではPyPAの努力により、ビルド配布物にeggではなくwheelを使用するとのこと。

$ python setup.py bdist_wheel

distディレクトリの中に、.whlファイルが作成される。

開発中のコードを独自開発環境のsite-packagesディレクトリの中からリンクさせる

この作業は特に必要というわけではないが、プログラム修正のたびにパッケージインストールしなくても済むように行っておく。

パッケージルートディレクトリ(htmlele)で以下のコマンドを入力する。

$ python setup.py develop