setup.pyのdistで作られたパッケージに含まれないファイルを含めるようにする。(MANIFEST.in)
気づかないでハマったのでメモ。
pythonでパッケージを作成するとき
setup.pyを書き、以下のコマンドを実行するとpypiに転送可能なように整えてパッケージングしてくれる。
(デフォルトでカレントディレクトリのdist以下にwindowsでzip,unixでtar.gz形式のファイルを作ってくれる)
python setup.py sdist
しかし、pythonモジュールに含まれないファイル(pythonのファイルとしてimportすることを想定されていないファイル)を含めてくれない。
このファイルをパッケージに含めたい場合はMANIFEST.iniを書く。
実際の例
このようなディレクトリ構成のパッケージを作りたいとする。
. └── foo ├── __init__.py ├── bar │ ├── __init__.py │ ├── boo.py │ └── doc │ ├── howto.txt │ └── memo.txt └── core.py 3 directories, 6 files
以上のようなディレクトリ構成の時、モジュールに含まれないファイルは以下の通り
- foo/bar/doc/howto.txt
- foo/bar/doc/memo.txt
これらを含めたい。
MANIFEST.iniに以下を書く。
recursive-include foo *
ちなみに含める個別に指定する場合はincludeを使う。(e.g. CHANGES.txtなど)
include CHANGES.txt