11
15

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 5 years have passed since last update.

Pythonの自作パッケージの作り方

Last updated at Posted at 2018-01-26

自作パッケージを作る際に、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,
)
11
15
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
11
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?