【Python入門】import の仕組みを完全理解!ハンズオンで学ぶモジュール&パッケージ5.4

当サイトではアフィリエイト広告を利用しています。

リファレンス

Pythonの import はシンプルなようで奥が深いもの。この記事では、初心者でも理解しやすいように ハンズオン形式import の仕組みを解説します!

Pythonのモジュールやパッケージ、動的インポートまでしっかり学んで、スムーズにコードを管理できるようになりましょう!💡


🎯 このハンズオンで学ぶこと

import の基本
✅ モジュールとパッケージの違い
sys.path を使ったモジュールの検索
importlib を使った動的インポート
✅ カスタムローダーの作成(上級編)

それでは、実際にコードを書きながら学んでいきましょう!✍️


1️⃣ import とは何か?

Pythonでは、他のPythonファイル(モジュール)を import して使うことができます。

🔧 ハンズオン: モジュールのインポート

まずは簡単なモジュールを作って、インポートしてみましょう!

📌 ステップ 1: モジュールを作成

mymodule.py というファイルを作ります。

# mymodule.py
def greet(name):
    return f"Hello, {name}!"

📌 ステップ 2: モジュールをインポートして使う

次に、main.py を作成し、mymodule をインポートします。

# main.py
import mymodule

print(mymodule.greet("Python"))

実行結果:

Hello, Python!

💡 ポイント

  • import mymodulemymodule.py を読み込む
  • mymodule.greet("Python") のように関数を呼び出せる

2️⃣ モジュールとパッケージの基本

Pythonでは、1つの .py ファイルを「モジュール」、複数のモジュールをまとめたディレクトリを「パッケージ」と呼びます。

📌 モジュールとパッケージの違い

項目 説明
モジュール .py ファイル(例: mymodule.py
パッケージ __init__.py を含むフォルダ(例: mypackage/

🔧 ハンズオン: パッケージを作成

📌 ステップ 1: フォルダ構成を作成

次のようなディレクトリを作ります。

mypackage/
├── __init__.py
├── utils.py
└── main.py

📌 ステップ 2: mypackage/utils.py の作成

# mypackage/utils.py
def add(a, b):
    return a + b

📌 ステップ 3: main.py でパッケージをインポート

# main.py
from mypackage import utils

print(utils.add(3, 5))

実行結果:

8

💡 ポイント

  • from mypackage import utils でパッケージからモジュールをインポート
  • mypackage には __init__.py があるのでパッケージとして認識される

3️⃣ sys.path を使ったモジュールの検索

Pythonが import するとき、どこを探すのか知っていますか?実は sys.path というリストを使って、特定のディレクトリを検索しています。

🔧 ハンズオン: sys.path を確認

import sys
print(sys.path)

実行結果(例):

['/Users/user/project',
 '/usr/local/lib/python3.13',
 '/usr/lib/python3.13']

💡 ポイント

  • Pythonは sys.path のリストにあるディレクトリを順に検索する
  • sys.path.append("追加したいパス") で検索パスを追加できる

4️⃣ importlib を使った動的インポート

通常の import はスクリプト実行時に読み込まれますが、importlib を使うと動的にモジュールをインポートできます。

🔧 ハンズオン: 動的インポート

import importlib

module_name = "math"  # 例として math モジュールをインポート
math_module = importlib.import_module(module_name)

print(math_module.sqrt(16))  # math.sqrt(16) と同じ

実行結果:

4.0

💡 ポイント

  • importlib.import_module("math")math モジュールをロード
  • math_module.sqrt(16) のように関数を実行できる

5️⃣ カスタムローダーを作成する(上級編)

Pythonの import の仕組みを 自作 することも可能です!

🔧 ハンズオン: 簡単なカスタムローダーを作る

import importlib.util
import sys

def load_module(name, path):
    spec = importlib.util.spec_from_file_location(name, path)
    module = importlib.util.module_from_spec(spec)
    spec.loader.exec_module(module)
    return module

# `mymodule.py` をロード
mymodule = load_module("mymodule", "./mymodule.py")

print(mymodule.greet("Custom Loader"))

実行結果:

Hello, Custom Loader!

💡 ポイント

  • importlib.util.spec_from_file_location で指定した .py ファイルをロード
  • exec_module() で実行し、モジュールとして使用可能

🎯 まとめ

学んだこと 説明
import モジュールをインポートする基本
パッケージ __init__.py を含むフォルダ
sys.path モジュールの検索パス
importlib 動的インポート
カスタムローダー 独自のインポート方法を作成

🚀 次のステップ

importlib を使ってカスタムプラグインシステムを作る
sys.modules を使ってモジュールの管理を理解する


Pythonの import の仕組みが理解できれば、よりスケーラブルで管理しやすいコードが書けるようになります!
ぜひ、実際に手を動かして試してみてくださいね!🔥