要約
自作モジュールを
pip install my_awesome_module
できるように公開するには、setup.py
と一緒にGitHubで公開すればOKという話
GitHub page: https://github.com/kyohashi/model_selection
そもそもpip installってなにしてるの?
PyPI(Python Package Index, パイピーアイ)へモジュールを探しに行っています。
例えば、PyPI.orgへアクセスしてnumpyを検索すると↓
https://pypi.org/
たしかにnumpyがありますね。↓
https://pypi.org/search/?q=numpy
PyPIにモジュールを登録する際には、モジュールのソースコードと一緒に、それらのメタ情報等を表すsetup.py
も必要となります。
以上をまとめると、
pip install hogehoge
- PyPIへ行きname=hogehogeで検索
- hogehogeに紐づく
setup.py
を読み込みモジュールとして認識&インストール
という手順を踏んでいると理解できます。
自作モジュールの公開方法
PyPIに登録すればpip install
できると判明しましたが、実はGitHubでも公開することができます。
要はソースコードとsetup.py
の在り処を教えてあげれば良いのでGitHubに登録したのち
pip install git+(URL)
で誰でもインストールが可能です。私は今回PyPIではなくGitHubでの公開を試しました。
GitHubへ登録したファイルおよびsetup.py
は下記の通りです。
.
├── README.md
├── requirements.txt
├── setup.py
└── src
└── model_selection
├── __init__.py
├── bayes_clustering.py
└── utils
├── __init__.py
└── check_datashape.py
from glob import glob
from os.path import basename
from os.path import splitext
from setuptools import setup
from setuptools import find_packages
def _requires_from_file(filename):
return open(filename).read().splitlines()
setup(
name="model_selection",
version="0.1.0",
description="statistical model selection with Bayesian IC like WAIC",
author="kyohashi",
url="https://github.com/kyohashi/model_selection.git",
packages=find_packages("src"),
package_dir={"": "src"},
py_modules=[splitext(basename(path))[0] for path in glob('src/*.py')],
include_package_data=True,
zip_safe=False,
install_requires=_requires_from_file('requirements.txt')
)
setup.py
を見ると、srcフォルダ以下のpythonファイルをmoduleとして認識していることがわかります。
以上を登録すると晴れて
pip install git+https://github.com/kyohashi/model_selection.git
が可能となります。
公開した自作モジュールの内容
今回作成したモジュールは、クラスター数の決定支援を目指したものになります。
具体的には下図のように、クラスター数候補すべてに対してGMMでモデリング&WAICを計算することで、最適と思われるクラスター数を推定するものです。MCMCサンプリングには、PyMC3を使用しています。
Toy Dataに対する実装例もありますので、併せてご覧ください。
Usecase: https://kyohashi.github.io/model_selection/gmm_usecase.html