PythonのModuleNotFoundErrorとは?意味・原因・直し方を初心者向けに解説

ながみえ

Pythonでコードを書いていると、ModuleNotFoundErrorというエラーが表示されることがあります。

特に、外部ライブラリを使おうとしてimportを書いたときや、pipでインストールしたはずなのに読み込めないときに発生しやすいエラーです。

エラーメッセージには、No module named '〇〇'のように表示されることが多く、初心者のうちは「何が見つからないのか」「pipで入れたのになぜ動かないのか」と迷いやすいポイントです。

この記事では、PythonのModuleNotFoundErrorの意味、よくある原因、エラー例、修正方法、pipで直らないときの確認ポイントを初心者向けに解説します。

Pythonでよく出るエラーを一覧で確認したい方は、「Pythonエラー一覧」も参考にしてください。

あわせて読みたい
Pythonエラー一覧|よくあるエラーの意味・原因・直し方
Pythonエラー一覧|よくあるエラーの意味・原因・直し方
あわせて読みたい
【完全無料】Python初心者向け完全ガイド
【完全無料】Python初心者向け完全ガイド

ModuleNotFoundErrorとは

ModuleNotFoundErrorは、Pythonが指定されたモジュールやライブラリを見つけられないときに発生するエラーです。

Pythonでは、別のファイルや外部ライブラリの機能を使いたいときに、importを使います。しかし、importしようとしたモジュールが現在のPython環境に存在しない場合、Pythonはそのモジュールを読み込めず、ModuleNotFoundErrorを表示します。

たとえば、次のように存在しないモジュールを読み込もうとすると、エラーになります。

import sample_module

このコードを実行すると、次のようなエラーメッセージが表示されます。

ModuleNotFoundError: No module named 'sample_module'

このメッセージは、「sample_moduleという名前のモジュールが見つかりません」という意味です。

ここで大切なのは、ModuleNotFoundErrorはコードの文法そのものが間違っているエラーではなく、Pythonが探しているモジュールを見つけられないエラーだという点です。

つまり、主な原因は次のようなものです。

import requests

このように書いた場合、Pythonはrequestsというライブラリを探します。もしrequestsがインストールされていなかったり、別のPython環境にインストールされていたりすると、ModuleNotFoundErrorが発生します。

初心者のうちは、まず「importしている名前が間違っていないか」と「そのライブラリが今使っているPython環境に入っているか」を確認すると、原因を見つけやすくなります。

ModuleNotFoundErrorが起きる主な原因

ModuleNotFoundErrorが起きる原因はいくつかあります。

初心者の場合は、「ライブラリをインストールしていない」「import名を間違えている」「pipで入れた場所と実行しているPython環境が違う」といったケースがよくあります。

原因を整理すると、次のようになります。

原因内容確認すること
ライブラリをインストールしていない使いたい外部ライブラリがまだ入っていないpip installを実行したか
import名を間違えているモジュール名やライブラリ名のつづりが違うスペル、大文字小文字
pipを別の環境で実行しているインストール先と実行中のPythonが違うpython -m pipを使って確認する
仮想環境が違うvenvなど、別の環境で実行している仮想環境が有効になっているか
パッケージ名とimport名が違うpipで入れる名前とimportする名前が違う場合があるライブラリの使い方を確認する
自分で作ったファイル名が影響しているファイル名やフォルダ名がimportの邪魔をしているファイル名がライブラリ名と重なっていないか

まず確認したいのは、エラーメッセージに表示されているNo module named '〇〇'の部分です。

たとえば、次のように表示されたとします。

ModuleNotFoundError: No module named 'requests'

この場合、Pythonはrequestsというモジュールを探しています。しかし、現在のPython環境からはrequestsが見つからないため、エラーになっています。

このとき、原因は必ずしも「requestsがインストールされていない」だけとは限りません。

たとえば、次のような可能性があります。

  1. requestsをまだインストールしていない
  2. requestsを別のPython環境にインストールしている
  3. 仮想環境を有効にしていない
  4. 実行しているPythonとpipの向き先が違う
  5. import名を間違えている

特に注意したいのは、「pipでインストールしたのに直らない」というケースです。

この場合、ライブラリ自体はどこかに入っていても、今実行しているPython環境からは見えていない可能性があります。

そのため、ModuleNotFoundErrorが出たときは、すぐにコードだけを直そうとするのではなく、次の順番で考えると分かりやすいです。

  1. importしている名前は正しいか
  2. 必要なライブラリはインストールされているか
  3. インストールした環境と実行している環境は同じか
  4. 仮想環境を使っている場合、その環境が有効になっているか

ModuleNotFoundErrorは、文法ミスというよりも「Pythonが探しているものを見つけられていない」エラーです。

そのため、原因を探すときは、import文の名前とPython環境を順番に確認していくことが大切です。

ModuleNotFoundErrorのエラー例と修正例

ここからは、ModuleNotFoundErrorが出る具体的なパターンを見ていきましょう。

同じModuleNotFoundErrorでも、原因は1つではありません。ライブラリを入れていない場合もあれば、pipで入れた環境と実行している環境が違う場合もあります。

ライブラリをインストールしていない場合

まず多いのが、使いたいライブラリをまだインストールしていないケースです。

たとえば、requestsという外部ライブラリを使いたい場合、次のようにimportを書きます。

import requests

しかし、requestsがインストールされていない環境で実行すると、次のようなエラーが出ます。

ModuleNotFoundError: No module named 'requests'

この場合、Pythonはrequestsというライブラリを探していますが、現在の環境に見つからないためエラーになっています。

修正するには、ターミナルやコマンドプロンプトで次のようにインストールします。

python -m pip install requests

インストールできたら、もう一度Pythonファイルを実行します。

import requests

print("requestsを読み込めました")

ここでのポイントは、pip install requestsではなく、できるだけpython -m pip install requestsの形で実行することです。

この書き方にすると、現在使っているPythonに対してpipを実行しやすくなります。特に、Pythonを複数インストールしている場合や、仮想環境を使っている場合に原因を減らしやすくなります。

import名のスペルを間違えている場合

次に多いのが、importする名前のスペルミスです。

たとえば、requestsを使いたいのに、次のように書いてしまったとします。

import request

この場合、Pythonはrequestという名前のモジュールを探します。しかし、インストールされているライブラリ名はrequestsなので、見つからずにエラーになります。

ModuleNotFoundError: No module named 'request'

修正するには、正しい名前に直します。

import requests

Pythonでは、名前のつづりが1文字でも違うと別のものとして扱われます。

また、大文字と小文字も区別されます。たとえば、Requestsrequestsは同じ名前ではありません。

import Requests

このように書くと、環境によっては次のようなエラーになります。

ModuleNotFoundError: No module named 'Requests'

修正するときは、ライブラリの公式ドキュメントやサンプルコードを見て、正しいimport名を確認しましょう。

pipでインストールしたのに直らない場合

ModuleNotFoundErrorで初心者が特につまずきやすいのが、「pipでインストールしたのにエラーが直らない」というケースです。

この場合、ライブラリ自体はインストールされていても、今実行しているPythonとは別の環境に入っている可能性があります。

たとえば、次のようにインストールしたとします。

pip install requests

それでも次のコードでエラーになることがあります。

import requests
ModuleNotFoundError: No module named 'requests'

この場合は、実行しているPythonとpipの向き先を確認します。

まず、Pythonのバージョンを確認します。

python --version

次に、pipがどのPythonに紐づいているか確認します。

python -m pip --version

さらに、対象のライブラリが入っているか確認したい場合は、次のようにします。

python -m pip show requests

Name: requestsのような情報が表示されれば、そのPython環境にはrequestsが入っています。

表示されない場合は、次のように入れ直します。

python -m pip install requests

「pipで入れたのに直らない」ときは、コードの書き方だけでなく、どのPython環境にインストールしたかを確認することが大切です。

仮想環境が違う場合

Pythonでは、プロジェクトごとに仮想環境を作ってライブラリを管理することがあります。

仮想環境を使っている場合、ライブラリはその環境の中にインストールされます。そのため、仮想環境を有効にしていない状態で実行すると、インストールしたはずのライブラリが見つからないことがあります。

たとえば、次のように仮想環境を作ったとします。

python -m venv .venv

仮想環境を使うには、まず有効化する必要があります。

Windowsの場合は、次のように実行します。

.venv\Scripts\activate

macOSやLinuxの場合は、次のように実行します。

source .venv/bin/activate

仮想環境を有効にしたあとで、ライブラリをインストールします。

python -m pip install requests

そのうえで、Pythonファイルを実行します。

import requests

print("仮想環境でrequestsを使えました")

仮想環境を使っている場合は、「仮想環境を有効にしてからインストールしたか」「仮想環境を有効にした状態で実行しているか」を確認しましょう。

パッケージ名とimport名が違う場合

外部ライブラリの中には、pipでインストールするときの名前と、Pythonコードでimportするときの名前が違うものがあります。

そのため、「インストール名と同じ名前でimportすればよい」と思っていると、ModuleNotFoundErrorが出ることがあります。

よくある例は、次のようなものです。

pipでインストールする名前importするときの名前
beautifulsoup4bs4
opencv-pythoncv2
scikit-learnsklearn
PillowPIL

たとえば、Beautiful Soupを使う場合、pipでは次のようにインストールします。

python -m pip install beautifulsoup4

しかし、Pythonコードでは次のようにimportします。

from bs4 import BeautifulSoup

ここで、次のように書くとエラーになります。

import beautifulsoup4
ModuleNotFoundError: No module named 'beautifulsoup4'

この場合、インストールに失敗しているのではなく、importするときの名前が違うことが原因です。

ライブラリを使うときは、pipで入れる名前だけでなく、Pythonコードでどの名前をimportするのかも確認しましょう。

自分で作ったファイルやフォルダを読み込めない場合

自分で作ったPythonファイルを別のファイルから読み込もうとして、ModuleNotFoundErrorが出ることもあります。

たとえば、次のような構成でファイルを作ったとします。

project/
  main.py
  my_module.py

この場合、main.pyからmy_module.pyを読み込むには、次のように書きます。

import my_module

しかし、ファイル名を間違えているとエラーになります。

import my_modul
ModuleNotFoundError: No module named 'my_modul'

修正するには、実際のファイル名に合わせます。

import my_module

また、別のフォルダにあるファイルを読み込もうとしている場合は、実行している場所やフォルダ構成が原因になることもあります。

初心者のうちは、まず同じフォルダにある短いファイルで試すと分かりやすいです。

project/
  main.py
  my_module.py

このように、同じフォルダに置いた状態でimportできるか確認すると、ファイル名のミスなのか、フォルダ構成の問題なのかを切り分けやすくなります。

ModuleNotFoundErrorが出たときの確認ポイント

ModuleNotFoundErrorが出たときは、やみくもにコードを書き換えるよりも、エラーメッセージと実行環境を順番に確認することが大切です。

特に、No module named '〇〇'の部分を見ると、Pythonが何を見つけられなかったのかが分かります。

確認するときは、次の順番で見ていきましょう。

  1. No module named '〇〇'に表示されている名前を確認する
  2. import文のスペルが合っているか確認する
  3. 大文字と小文字を間違えていないか確認する
  4. 必要なライブラリをインストールしているか確認する
  5. python -m pip install ライブラリ名でインストールできているか確認する
  6. 実行しているPythonとpipの環境が同じか確認する
  7. 仮想環境を使っている場合は、有効になっているか確認する
  8. pipで入れる名前とimportする名前が違っていないか確認する
  9. 自分で作ったファイル名やフォルダ名が原因になっていないか確認する

たとえば、次のようなエラーが出たとします。

ModuleNotFoundError: No module named 'requests'

この場合、まず確認するのはrequestsという名前です。

import文で次のように書いているか確認します。

import requests

もし次のように、つづりが違っていればエラーになります。

import request

スペルに問題がなければ、次にライブラリがインストールされているか確認します。

python -m pip show requests

ライブラリが入っていない場合は、次のようにインストールします。

python -m pip install requests

それでも直らない場合は、Pythonとpipの環境がずれている可能性があります。

次のコマンドで、実行しているPythonとpipの情報を確認しましょう。

python --version
python -m pip --version

仮想環境を使っている場合は、仮想環境を有効にした状態でインストールと実行をしているかも確認します。

Windowsでは、次のように有効化します。

.venv\Scripts\activate

macOSやLinuxでは、次のように有効化します。

source .venv/bin/activate

仮想環境を有効にしたあとで、もう一度ライブラリをインストールします。

python -m pip install requests

また、ライブラリによっては、pipでインストールする名前とimportする名前が違うことがあります。

たとえば、beautifulsoup4はpipでインストールしますが、Pythonコードではbs4としてimportします。

python -m pip install beautifulsoup4
from bs4 import BeautifulSoup

このように、ModuleNotFoundErrorは「ライブラリが入っていない」と決めつけず、名前、インストール状況、Python環境の順番で確認すると原因を見つけやすくなります。

初心者のうちは、まず次の3つを意識するとよいです。

  1. importしている名前は正しいか
  2. そのライブラリは今のPython環境に入っているか
  3. 仮想環境を使っている場合、正しい環境で実行しているか

この3つを確認するだけでも、ModuleNotFoundErrorの多くは解決しやすくなります。

ModuleNotFoundErrorに関するよくある質問

ここでは、ModuleNotFoundErrorについて初心者が疑問に感じやすいポイントを整理します。

エラーが出たときに迷いやすい「No module namedの意味」や「pipでインストールしたのに直らない理由」も確認しておきましょう。

ModuleNotFoundError: No module named とはどういう意味ですか?

ModuleNotFoundError: No module named '〇〇'は、「〇〇という名前のモジュールが見つかりません」という意味です。

たとえば、次のように表示された場合は、Pythonがrequestsというモジュールを見つけられていません。

ModuleNotFoundError: No module named 'requests'

この場合は、requestsがインストールされているか、import名が間違っていないか、実行しているPython環境が正しいかを確認します。

pip installしたのにModuleNotFoundErrorが出るのはなぜですか?

pipでインストールしたのにModuleNotFoundErrorが出る場合は、ライブラリを入れた環境と、Pythonを実行している環境が違う可能性があります。

たとえば、複数のPythonをインストールしている場合や、仮想環境を使っている場合に起きやすいです。

この場合は、次のようにpython -m pipを使ってインストールし直してみましょう。

python -m pip install requests

また、対象のライブラリが現在のPython環境に入っているか確認したい場合は、次のコマンドを使います。

python -m pip show requests

何も表示されない場合は、そのPython環境にはrequestsが入っていない可能性があります。

仮想環境を使っている場合は何を確認すればよいですか?

仮想環境を使っている場合は、その仮想環境が有効になっているかを確認します。

仮想環境を有効にしていない状態でpipを実行すると、別のPython環境にライブラリが入ってしまうことがあります。

Windowsでは、次のように仮想環境を有効にします。

.venv\Scripts\activate

macOSやLinuxでは、次のように実行します。

source .venv/bin/activate

仮想環境を有効にしたあとで、次のようにライブラリをインストールします。

python -m pip install ライブラリ名

仮想環境を使っているときは、「有効化してからインストールしたか」と「有効化した状態でPythonを実行しているか」を確認しましょう。

パッケージ名とimport名が違うことはありますか?

あります。

Pythonの外部ライブラリには、pipでインストールするときの名前と、Pythonコードでimportするときの名前が違うものがあります。

たとえば、beautifulsoup4はpipでインストールしますが、コードではbs4としてimportします。

python -m pip install beautifulsoup4
from bs4 import BeautifulSoup

このようなライブラリでは、pipで入れる名前をそのままimportすると、ModuleNotFoundErrorになることがあります。

ライブラリを使うときは、インストール方法だけでなく、サンプルコードに書かれているimport文も確認しましょう。

まとめ|ModuleNotFoundErrorは環境と名前を順番に確認しよう

ModuleNotFoundErrorは、Pythonがimportしようとしたモジュールやライブラリを見つけられないときに発生するエラーです。

主な原因は、ライブラリをインストールしていない、import名を間違えている、pipで入れた環境と実行しているPython環境が違う、仮想環境が有効になっていないことです。

エラーが出たときは、まずNo module named '〇〇'に表示されている名前を確認しましょう。そのうえで、import文のスペル、インストール状況、Python環境を順番に見直すと、原因を見つけやすくなります。

特に「pipでインストールしたのに直らない」という場合は、python -m pip install ライブラリ名を使って、今実行しているPython環境にインストールできているか確認することが大切です。

Pythonでよく出るエラーをまとめて確認したい方は、「Pythonエラー一覧」も参考にしてください。

あわせて読みたい
Pythonエラー一覧|よくあるエラーの意味・原因・直し方
Pythonエラー一覧|よくあるエラーの意味・原因・直し方
あわせて読みたい
【完全無料】Python初心者向け完全ガイド
【完全無料】Python初心者向け完全ガイド

記事URLをコピーしました