自作パッケージを作る際に、MANIFEST.in に記載したjsonファイルが
pip install
した時にライブラリに入っていなかったので調査した結果メモ。
結論
setup.pyに include_package_data=True
と記載すればよかった。
ディレクトリ構成
.
├── tests
├── requirements.txt
├── MANIFEST.in
├── setup.py
└── src
├── config
| └── config.json
└── main.py
大まかにこんな感じ。
requirements.txt
依存ライブラリを記載しておく。
現環境で使用しているライブラリの書き出しは以下コマンドでできる。
pip freeze > requirements.txt
MANIFEST.in
何も指定しないと、 .py
のファイルしかパッケージに入れないため
.json
などの設定ファイルも入れたい場合は、用意する必要がある。
include requirements.txt
include src/config/*.json
ワイルドカードが使用できる。
setup.py
# -*- coding: utf-8 -*-
from setuptools import setup, find_packages
import os
def load_requires_from_file(fname):
if not os.path.exists(fname):
raise IOError(fname)
return [pkg.strip() for pkg in open(fname, 'r')]
setup(
name='package_name',
version='0.0.1',
url='GitHubのURLなど',
install_requires=load_requires_from_file('requirements.txt'),
# testsはパッケージに入れる必要が無いので除外
packages=find_packages(exclude=['tests']),
# MANIFEST.in を使うために必要
include_package_data=True,
)