インストールしたのに「ModuleNotFoundError」が出る原因と直し方

pip install したのに、実行するとこう出る。

ModuleNotFoundError: No module named 'requests'

入れたはずなのに無い。これはたいてい、インストールした先のPythonと、コードを実行しているPythonが別物だからだ。Pythonが複数入っていると起きやすい。

原因を確認する

pip がどのPython用なのかを見る。

Terminal window
pip -V
python -V

pip -V の表示するパスと、実行に使っている python のパスがずれていたら、それが原因だ。pip で入れたのに、別の python で動かしている状態。

直し方1:pythonとpipを揃える

python -m pip で入れると、その python 自身にインストールされるので確実にずれない。

Terminal window
python -m pip install requests
python your_script.py

pip install ではなく python -m pip install を習慣にすると、この問題はほぼ起きなくなる。

直し方2:仮想環境(venv)を使う

プロジェクトごとに環境を分けると、どのPythonに入れたかで迷わなくなる。

Terminal window
python -m venv .venv
source .venv/bin/activate # Windowsは .venv\Scripts\activate
python -m pip install requests

activate した状態の pythonpip は必ず同じ環境を指すので、ずれが起きない。

まとめ

  • 原因:インストール先のPythonと実行中のPythonが違う
  • pip -Vpython -V のパスを見比べる
  • python -m pip install で揃える
  • プロジェクトはvenvで分けると根本的に防げる