Makefile と分類子

Pythonパッケージ開発

James Fulton

Climate informatics researcher

分類子(Classifiers)

  • パッケージのメタデータ
  • PyPI で見つけやすくする
  • 含めるべき項目
    • パッケージの状態
    • 想定ユーザー層
    • ライセンス
    • 言語
    • 対応 Python バージョン
  • ほか多数の分類子: https://pypi.org/classifiers

mysklearn の setup.py

setup(
    ...
    classifiers=[
        'Development Status :: 2 - Pre-Alpha',
        'Intended Audience :: Developers',
        'License :: OSI Approved :: MIT License',
        'Natural Language :: English',
        'Programming Language :: Python :: 3',
        'Programming Language :: Python :: 3.6',
        'Programming Language :: Python :: 3.7',
        'Programming Language :: Python :: 3.8',
    ],
    ...
)
Pythonパッケージ開発

Makefile の目的

  • パッケージのビルド作業を自動化するために使用
mysklearn/
...
|-- README.md
|-- setup.py
|-- Makefile  <---
...
Pythonパッケージ開発

Makefile の中身

Makefile

...

dist: ## ソースと wheel をビルド
    python3 setup.py sdist bdist_wheel

clean-build: ## ビルド成果物を削除 rm -fr build/ rm -fr dist/ rm -fr .eggs/
test: ## 既定の Python で素早くテスト実行 pytest
release: dist ## パッケージ化してリリースをアップロード twine upload dist/*
Pythonパッケージ開発

Makefile の使い方

make <function-name>
mysklearn/ <--- ここに移動
...
|-- README.md
|-- setup.py
|-- Makefile  
...
Pythonパッケージ開発

Makefile の使い方

dist 関数を使うには、ターミナルで入力します

make dist

Makefile

...

dist: ## ソースと wheel をビルド
    python3 setup.py sdist bdist_wheel

clean-build: ## ビルド成果物を削除
    rm -fr build/
    rm -fr dist/
    rm -fr .eggs/

test: ## 既定の Python で素早くテスト実行
    pytest

release: dist ## パッケージ化してリリースをアップロード
    twine upload dist/*
Pythonパッケージ開発

Makefile まとめ

make help
clean                すべてのビルド・テスト・カバレッジ・Python 生成物を削除
clean-build          ビルド成果物を削除
clean-pyc            Python ファイル生成物を削除
clean-test           テストとカバレッジ成果物を削除
lint                 flake8 でスタイルをチェック
test                 既定の Python で素早くテスト実行
test-all             すべての Python 版で tox によりテスト
release              パッケージ化してリリースをアップロード
dist                 ソースと wheel をビルド
install              アクティブな Python の site-packages にインストール
Pythonパッケージ開発

Ayo berlatih!

Pythonパッケージ開発

Preparing Video For Download...