Pythonを実行していると、次のようなエラーを見かけることがあります。
ImportError: cannot import name 'xxx'
ModuleNotFoundError: No module named 'xxx'
どちらも「import に失敗している」ように見えますが、
この2つは原因も対処法も異なるエラーです。
この記事では、ImportError と ModuleNotFoundError の違いと、エラー文からの見分け方を初心者向けに分かりやすく解説します。
目次
この記事でわかること
- ImportError と ModuleNotFoundError の違い
- エラー文の読み方
- それぞれが出る典型的な原因
- 最初に確認すべきポイント
ModuleNotFoundError とは?
エラー例
ModuleNotFoundError: No module named 'requests'
意味
指定したモジュール自体が見つからない場合に出るエラーです。
Pythonが、
- インストール済みのライブラリ
- 標準ライブラリ
- 実行環境のパス
のどこを探しても、
該当するモジュールを見つけられない状態です。
ModuleNotFoundError が出る主な原因
- モジュールがインストールされていない
- 仮想環境(venv)が有効化されていない
- 別のPython環境でpip installしている
- モジュール名のスペルミス
ImportError とは?
エラー例
ImportError: cannot import name 'Session' from 'requests'
意味
モジュール自体は存在するが、その中の指定した要素が見つからない場合に出るエラーです。
つまり、
- モジュールはある
- でも import しようとしている「中身」が違う
という状態です。
ImportError が出る主な原因
- 存在しないクラス・関数をimportしている
- ライブラリのバージョンが違う
- 古いサンプルコードを使っている
- import文の書き方が間違っている
違いを一目で見分ける方法
ポイント① エラー名を見る
- ModuleNotFoundError
→ モジュール自体がない - ImportError
→ モジュールはあるが中身が違う
ポイント② エラーメッセージの内容
ModuleNotFoundError
No module named 'xxx'
👉 インストール・環境を疑う
ImportError
cannot import name 'xxx'
👉 import対象やバージョンを疑う
それぞれの最初の対処ポイント
ModuleNotFoundError の場合
pip3 install モジュール名
- 仮想環境が有効か確認
- pip3 が正しいPythonを指しているか確認
ImportError の場合
- モジュールの公式ドキュメントを確認
- 現在のバージョンを確認
pip3 show モジュール名
- import文の書き方を見直す
よくある勘違い
- ImportError = インストールされていない
→ ❌ 必ずしもそうではない - ModuleNotFoundError = コードの書き間違い
→ ❌ 環境の問題であることが多い
まとめ
Pythonの import エラーは、
エラー名を見るだけで原因の方向性が分かります。
- ModuleNotFoundError
→ モジュールが存在しない(環境・インストール) - ImportError
→ モジュール内の指定が違う(使い方・バージョン)
まずは エラー文を正確に読むことが、
最短で解決するための第一歩です。
コメントを残す