ModuleNotFoundError: No module namedの直し方|インストール済みでも出る原因
PythonのModuleNotFoundErrorを、未インストール・環境の違い・import名の違いから確認。実行中のPythonとpipを照合するコマンド付きです。
更新日
まず確認すること
エラーに出た名前をそのままpipへ渡す前に、何を実行しているかと、どのPythonに入れたかを確認します。インストール時のパッケージ名とimport名は異なることもあります。
エラー末尾の名前と発生箇所を読む
ModuleNotFoundError: No module named 'requests' なら、実行中のPythonがrequestsを見つけられていません。トレースバックで自分のimportが失敗したのか、別のライブラリの内部で失敗したのかも確認します。
以下はrequestsを使うプログラムの例です。他のエラーでは、必要なパッケージの公式手順を確認して読み替えてください。存在しない名前や似た名前のパッケージを推測で入れないようにします。
実行中のPythonとpipを照合する
プログラムを実行するのと同じターミナルで確認します。エディタやノートブックだけで失敗する場合は、そこで import sys; print(sys.executable) を実行し、下の結果と比べます。
PowerShell/コマンドプロンプト:現在の環境を確認
python -c "import sys; print(sys.executable)"
python -m pip --version
python -m pip show requestsターミナルで見つかることと、エディタが同じPythonを使っていることは別です。実行ファイルのパスが異なるなら、エディタ側で目的の環境を選び直します。
表示結果に合わせて次の操作を選ぶ
再インストールを繰り返す前に、どこで見つからないかを確認します。
| 結果 | 次にすること |
|---|---|
| pip showで見つからない | 目的のPythonへ必要なパッケージを導入 |
| pip showでは見つかるがエディタだけ失敗 | エディタのPython/カーネルを確認 |
| PILなど名前が異なる | 配布名とimport名を公式資料で確認 |
| 自作モジュールが見つからない | ファイル配置、綴り、実行方法を確認 |
目的のPythonへ導入してimportを確認する
requestsを使うことが分かっている場合は、同じPython経由でpipを実行します。導入がエラーで終わったときは、そのエラーを先に解決してください。
requestsを必要とする場合の例
python -m pip install requests
python -c "import requests; print(requests.__file__)"配布名と自作ファイルの名前に注意する
例えばPillowはインストール名が Pillow、import名が PIL です。エラーの名前だけで配布元を判断せず、使っているアプリやライブラリの依存関係を確認します。
自分のスクリプトを requests.py などライブラリと同じ名前にすると、別のファイルが読み込まれる原因になります。自作ファイルの名前と配置を見直し、必要なパッケージの場所が読み込まれるか確認してください。
直ったかは元の実行方法で確認する
単体のimportが成功したあと、元のエディタや起動手順からプログラムを実行します。ここでだけ失敗するなら、起動方法による環境の違いが残っています。
相談する場合は、エラー全体、sys.executable、pipの表示、起動方法をまとめます。個人名やアクセストークンを含む部分は公開前に取り除いてください。
よくある質問
『Requirement already satisfied』なのに直りません。
その表示は、呼び出したpipの環境では条件を満たしているという意味です。プログラムを動かすPythonが同じ環境かを、実行ファイルのパスで照合します。
参考にした公式資料
操作項目はWindowsやアプリの更新で変わる場合があります。画面が異なるときは公式資料も確認してください。