Python
では、モジュールとパッケージの違いを理解することが重要です。
モジュール
モジュールは単純にPython
ファイルです。ファイル名がそのままモジュール名となり、import
文を使って他のPython
ファイルから関数やクラスを使用できます。
import my_module
上記の例では、my_module.py
をインポートしています。
パッケージ
一方、パッケージは複数のモジュールを含むディレクトリです。ディレクトリがパッケージとして認識されるためには、__init__.py
ファイルが必要です。このファイルはパッケージの初期化処理に使われ、サブモジュールやサブパッケージのインポートを管理します。
例えば、次のようなパッケージ構造があります。
my_package/
__init__.py
module1.py
module2.py
my_package
内のモジュールを次のようにインポートできます。
from my_package import module1
Python 3.3以降の変更
Python
3.3からはPEP 420
によって、__init__.py
がなくてもパッケージが認識される「ネームスペースパッケージ」が導入されました。これにより、複数のディレクトリからパッケージを拡張できるようになりました。
まとめ
- モジュールは
Python
ファイルです。 - パッケージはモジュールの集合をディレクトリで管理し、
__init__.py
で初期化されます。 - ネームスペースパッケージは
Python
3.3以降、__init__.py
なしでディレクトリをパッケージとして扱える仕組みです。