6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

自作モジュールをpip installできるように公開してみた

Posted at

要約

自作モジュールを

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も必要となります。
以上をまとめると、

  1. pip install hogehoge
  2. PyPIへ行きname=hogehogeで検索
  3. 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
    
setup.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を使用しています。

Untitled Diagram.png

Toy Dataに対する実装例もありますので、併せてご覧ください。
Usecase: https://kyohashi.github.io/model_selection/gmm_usecase.html

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?