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