【Python】setuptoolsで自作モジュールを一発入魂

下記リポジトリのREADMEにソースと一緒にまとめた。

github.com

下記README

Python】setuptoolsで自作モジュールを一発入魂

  • setuptoolsを使ってsetup.pyを試してみたリポジトリです
  • できるだけ簡素な状態のリポジトリでパッと見てサクッと使えるように作りました
  • pipを使ってgitから一発インストールできます
pip install git+https://github.com/keix1/setuppy.git

setuptoolsについて

  • 今までは頑張ってsys.path.append()で自作モジュールをimportしていたが、相対パスを考えたりしなくてはならず面倒だった
  • setuptoolsなら自作モジュールをpipや開発環境に一発入魂できる
    • どこからでもimportできる
  • GitHubからもpip installできる
  • コマンドラインツールもinstallできる
  • twineを使えばPyPIにアップロードして普通にpip installもできるようになる

本レポのディレクトリ構造

.
├── setup.py
├── sample
│   ├── __init__.py
│   ├── hoge.py
│   └── sample.py
└── test
    └── test.py

Local develop

  • ローカルファイルを更新すると即座に更新が反映される。
  • 開発用途ならこれで良さそう。

Install on Local develop

インストール

cd setuppy
python setup.py develop

確認

pip list | grep sampleA

実行

python test/test.py

developインストールするなら下記は省いても動いた

  • __init__.py
  • setup.pyのpackagesとentry_points部分

Uninstall on Local develop

python setup.py develop -u

pip

  • GitHubに置けばGitHubから配布が可能になる
  • 当然だがスクリプトを更新したら再度pip installする必要がある
  • 上記で触れた__init__.pysetup.pyのpackage記述がいる

pip install

cd setuppy
pip install .

pip install from GitHub

pip install git+https://github.com/keix1/setuppy.git

pip uninstall

pip uninstall SampleA

コマンドラインツールとして使う

  • 本レポをInstall済みであればsample_commandが使えるようになっている
sample_command
  • setup.pyentry_pointsconsole_scriptsCLIツール指定するための記述になっている

わかったこと

  • develop installでは.egg-infoに関係性が保存されてる様子
  • __init__.pyは空ファイルでもいいみたい
  • CLIツールとして使えるのちょっとやばい

参考