パッケージを始める

Pythonパッケージ開発

James Fulton

Climate informatics researcher

なぜパッケージ化するのか

  • 再利用しやすくするため
  • コピペを減らすため
  • 関数を最新に保つため
  • 他者に配布するため
Pythonパッケージ開発

コース内容

本コースではパッケージを一から作り、次を扱います:

  • ファイル構成
  • インポート構造
  • インストール可能にする
  • ライセンスとREADME追加
  • 品質向上のためのスタイルと単体テスト
  • PyPIへの登録・公開
  • テンプレートの活用
Pythonパッケージ開発

スクリプト、モジュール、パッケージ

  • スクリプト - python myscript.py のように実行するPythonファイル

  • パッケージ - インポートされるPythonコードのディレクトリ

    • 例: numpy
  • サブパッケージ - パッケージ内の小さなパッケージ

    • 例: numpy.randomnumpy.linalg
  • モジュール - パッケージ内のPythonファイル(パッケージのコードを格納)

    • 例: 次の2枚で紹介
  • ライブラリ - パッケージ、またはパッケージ群

    • 例: Python標準ライブラリ(math, os, datetime, ...)
Pythonパッケージ開発

パッケージのディレクトリ構成

シンプルなパッケージのディレクトリ構成

mysimplepackage/
|-- simplemodule.py
|-- __init__.py
  • mysimplepackage はPythonパッケージ
  • simplemodule.py にパッケージのコードが入る
  • __init__.py がこのディレクトリをパッケージとして示す
Pythonパッケージ開発

シンプルなパッケージの中身

__init__.py

空ファイル

simplemodule.py
def cool_function():
    ...
    return cool_result

...

def another_cool_function():
    ...
    return another_cool_result

汎用的な関数とコードを含むファイル。

Pythonパッケージ開発

サブパッケージ

サブパッケージを含むディレクトリ構成

mysklearn/
|-- __init__.py
|-- preprocessing
|   |-- __init__.py
|   |-- normalize.py
|   |-- standardize.py
|-- regression
|   |-- __init__.py
|   |-- regression.py
|-- utils.py
Pythonパッケージ開発

Ayo berlatih!

Pythonパッケージ開発

Preparing Video For Download...