『Python入門』モジュール・パッケージ・ライブラリとは

Python プログラミング Python

モジュール・パッケージ・ライブラリ、この3つの用語は慣れるまでは区別が付きづらいかと思います。

ここではざっくりとした解説になりますが、イメージをつかんでいただければと思います。

モジュールとは

モジュールとは拡張子が「.py」のスクリプトファイルのことを指します。

このスクリプトファイルをインポートすることで、ファイルに定義されている「関数」や、「クラス」を別のファイルから利用できるようになります。

インポートする時に指定するモジュール名は、拡張子を除いたファイル名前を指定します。

1つ例として、calc.pyというモジュール(スクリプトファイル)を、別ファイルのtest.pyで読み込んで利用したい場合には以下のような記述をします。

構成は以下のようになります。

calc.py
┗ test.py

 

パッケージとは

パッケージとはモジュールをいくつか含めたディレクトリのことです。

パッケージにはモジュールだけではなく、サブパッケージを含むことも出来ます

パッケージには通常のパッケージと名前空間パッケージの2種類あります

構成は以下のようになります。

mycalc/
    ┣ __init__.py
    ┣ calc.py
    ┣ bookkeeping.py
    ┗ test.py

 

通常のパッケージ(Regular package)

パッケージと言った場合は普通はこちらを指し、フォルダに __init__.py含めたパケージになります。

__init__.py は予約語なので名前を変えてはいきません。

この __init__.py を含んだパッケージをインポートすることで、最初に __init__.py が呼ばれてこの中に記述された内容が実行されますが、中身は空でも構いません。

__init__.py にはパッケージがインポートされた場合に公開するモジュールを制限するために公開するモジュールのインポート文を記述するなどと言ったことが出来ます。

 

名前空間パッケージ(Namespace package)

名前空間パッケージはPython3.3で追加された機能で、フォルダに __init__.py を含めないパッケージになります。

パッケージの階層を名前空間として扱うことで同名のパッケージの衝突を防ぎ、同名のパッケージのモジュールを指定可能にします

パッケージ名が重複してしまったなどの最終手段として利用ができますが、推奨はできません

なぜなら、モジュールや関数名までも重複してしまった場合には最後にimportした機能に上書きされるなどの影響を受ける可能性があるためです。

良くない例:
構成は以下のようになります。

┣ connect_python/
┃             ┗ talk/
┃               ┗ hallo.py 
┣ connect_world/
┃             ┗ talk/
┃               ┗ greeting.py
┗ test.py

実行結果のとおり、関数名が重複した場合は、後にインポートされたgreeting.pyで定義された関数が実行されています。
このようなことは無いかと思われますが、基本的にパッケージには __init__.py を含むようにすることをお勧めします。
上記はtalkファルダに __init__.py を含めることでエラーとなります

 

ライブラリとは

いくつかのパッケージをまとめて1つのライブラリとしてインストールできるようにしたもの。または、関数・モジュール・パッケージの総称になります。

ライブラリには標準ライブラリと外部ライブラリがあります。

 

標準ライブラリ(Standard library)

Pythonには多くの関数やモジュールが標準ライブラリとして用意されています。

一般的な方法でPythonをインストールした場合、標準ライブラリがデフォルトで含まれます。

組込み関数の例:

 len() オブジェクトの長さ (要素の数) を取得。
 open() ファイルを開いてファイルオブジェクトを取得。

標準ライブラリ(モジュール)の例:

 sys Pythonのインタプリタや実行環境に関する情報を扱うためのライブラリ。
 math C標準で定義された数学関数を扱うためのライブラリ。

標準ライブラリについては以下の公式ドキュメントを参照。

Python 標準ライブラリ - Python3.8.2 ドキュメント

 

外部ライブラリ(Thirdparty library)

標準ライブラリには無い便利なライブラリをpipなどを使って追加でインストールできます。

外部ライブラリ(モジュール)の例:

 numpy 科学計算の基本パッケージ
 pandas 高性能で使いやすいデータ構造とデータ分析ツールを提供するライブラリ

numpyの公式ドキュメント

pandasの公式ドキュメント

 

まとめ

モジュール・パッケージ・ライブラリの関係を図で示すと以下のようになります。

Python ライブラリ・パッケージ・モジュールのイメージ図

さらに詳しく知りたい場合は以下の公式ドキュメントを参照してください。

Python 3.8.2 ドキュメント - 5.インポートシステム

Python 3.8.2 ドキュメント - 用語集 -package

 

タイトルとURLをコピーしました