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