結論から言うと、import エラーが出たときは、モジュール名、ファイルの場所、実行している場所を順番に確認すると原因を絞りやすいです。

Pythonでファイルを分け始めると、ModuleNotFoundErrorImportError に出会うことがあります。
エラー文だけを見ると難しく感じますが、多くの場合は「名前が違う」「見える場所にない」「実行場所が想定と違う」のどれかです。
この記事では、import エラーが起きる代表的な原因と、実務で確認する順番を整理します。

この記事でわかること

  • import エラーが起きる代表的な原因
  • ModuleNotFoundErrorImportError の見方
  • 実務で慌てずに確認する手順

完成コード

完成コードは次の通りです。

try:
    from pathlib import Path
except ImportError as error:
    print(f"読み込みに失敗しました: {error}")
else:
    report_dir = Path("reports")
    report_file = report_dir / "sales.txt"
    print(report_file)

自作モジュールでエラーが出る場合は、次のような構成を確認します。

project/
  main.py
  report_tools.py

main.py から同じフォルダの report_tools.py を読み込むなら、基本形は次の通りです。

from report_tools import create_report

コードのポイント

このコードでは、import に失敗した場合の見方を意識するために、tryexcept を使っています。

  • ImportError は、読み込みに失敗したときに関係する例外です
  • 標準ライブラリの pathlib は通常そのまま読み込めます
  • 自作モジュールでは、ファイル名や実行場所の影響を受けやすくなります
  • エラーが出たら、まずエラーメッセージに出ている名前を確認します

実務では、エラーを握りつぶすよりも、原因を読み取ることが大切です。
この記事の完成コードは例外の形を確認するための短い例で、実際の調査では表示されたエラーメッセージをよく読みます。

コードを順番に説明します

主要な処理を分けて説明します。

1. 読み込みに失敗したときの例外を確認します

try:
    from pathlib import Path
except ImportError as error:
    print(f"読み込みに失敗しました: {error}")

try の中で import を行い、失敗した場合は except ImportError で受けています。
ImportError は、モジュールや名前の読み込みに失敗したときに関係する例外です。

実際には、標準ライブラリの pathlib で失敗することはほとんどありません。
ここでは、import も例外の対象になることを確認するための例として見てください。

2. モジュール名とファイル名を確認します

from report_tools import create_report

自作モジュールでよくあるのは、ファイル名と import している名前がずれているケースです。
たとえば、ファイル名が report_tool.py なのに report_tools と書いていると、Pythonは目的のファイルを見つけられません。

また、ファイル名にハイフンを使うと import しにくくなります。
自作モジュールのファイル名は、英小文字とアンダースコアで付けると扱いやすいです。

3. 実行場所とフォルダ構成を確認します

project/
  main.py
  report_tools.py

main.pyreport_tools.py が同じフォルダにある場合、基本的には from report_tools import create_report で読み込めます。
それでも失敗する場合は、どのフォルダから python main.py を実行しているかを確認します。

パッケージ構成にしている場合は、from sales.report import create_report のように、フォルダ名も含めて指定する必要があります。
ファイルを移動したあとに import 文を直し忘れることも、よくある原因です。

実務で使うときのポイント

実務で import エラーが出たときは、次の順番で見ると原因を切り分けやすいです。

  • エラーメッセージに出ているモジュール名を確認する
  • ファイル名、フォルダ名、関数名のスペルを確認する
  • main.py をどの場所から実行しているか確認する
  • 自作ファイルが標準ライブラリと同じ名前になっていないか確認する
  • パッケージ構成に変えたあと、import 文を更新したか確認する

特に、csv.pyjson.py のような名前で自作ファイルを作ると、標準ライブラリと衝突して思わぬ読み込みになります。
便利そうな短い名前ほど、既存のモジュール名と重なっていないか注意が必要です。

第5章で学んだ import、自作モジュール、パッケージ構成を理解しておくと、エラーが出ても落ち着いて原因を探せます。
次の第6章では、標準ライブラリを実務の処理に活用していきます。

よくある勘違い・注意点

  • ModuleNotFoundError は、指定したモジュールが見つからないときによく出ます
  • ImportError は、モジュール内の名前を読み込めない場合にも関係します
  • インストールすれば必ず直るとは限らず、自作ファイルの名前や実行場所が原因のこともあります
  • エラー文の最後の行だけでなく、どのファイルから読み込みが始まったかも見ることが大切です

まとめ

  • import エラーでは、名前、場所、実行方法を順番に確認します
  • 自作モジュールでは、ファイル名と import 文のずれがよくある原因です
  • 標準ライブラリと同じ名前のファイルを作ると、読み込みが混乱することがあります
  • 実務では、エラーメッセージを読み、構成を見直す習慣が重要です

次の記事