できない.dev

Python import できない(ModuleNotFoundError)

ModuleNotFoundError は「使っている Python と pip install 先が別」「PYTHONPATH の通っていないディレクトリ」「相対 import の記法ミス」のいずれかが原因。

#import#pip#venv#pythonpath

公開: 更新:

要約

ModuleNotFoundError: No module named 'X' の解決は、まず python -m pip install X を実行する Python 実行ファイルが、 スクリプトを動かす Python と 同一かを確認 することから始める。

よくある原因

  1. venv 未活性化 で system Python に入っている
  2. pip install別の Python(pyenv/conda/system)に対して走った
  3. パッケージ名と import 名が異なる(例: opencv-pythoncv2
  4. 相対 import を含むファイルを python script.py で直接実行している

解決策

1. 実行 Python と pip の整合確認

which python
which pip
python -c "import sys; print(sys.executable)"

3つが同じ場所を指していなければ、まず venv を activate するか python -m pip install <pkg> で確実に紐付ける。

2. venv を作って隔離

python -m venv .venv
source .venv/bin/activate    # Windows: .venv\Scripts\activate
pip install <pkg>

3. 相対 import の解決

# パッケージ内のファイルを直接実行せず、モジュールとして起動
python -m mypackage.script

4. import 名を調べる

pip install 名と import 名は別物のことがある。
PyPI のページ/README で 正式な import 名 を確認する。

実行例

実際に上記の手順を python:3.12(Debian GNU/Linux 13)環境で動かすと、import requestsModuleNotFoundError で終了コード 1 となった後、python -m pip install で同一インタープリター(/usr/local/bin/python)へインストールしたことで再実行が正常終了し、requests 2.31.0 がロードされることを確認できる。

== versions ==
PRETTY_NAME="Debian GNU/Linux 13 (trixie)"
Python 3.12.13
git version 2.47.3
== run ==
--- Python の実行環境を確認 ---
3.12.13 (main, May 20 2026, 02:59:11) [GCC 14.2.0]
executable: /usr/local/bin/python
--- python app.py (ModuleNotFoundError: requests を想定)---
Traceback (most recent call last):
  File "/tmp/tmp.7PDNx1ztvf/app.py", line 1, in <module>
    import requests
ModuleNotFoundError: No module named 'requests'
終了コード: 1
--- 解消: python -m pip install で「実行している Python」に確実に入れる ---
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager, possibly rendering your system unusable. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv. Use the --root-user-action option if you know what you are doing and want to suppress this warning.
 
[notice] A new release of pip is available: 25.0.1 -> 26.1.2
[notice] To update, run: pip install --upgrade pip
pip 終了コード: 0
--- 再実行 ---
requests version: 2.31.0
終了コード: 0
--- 参考: requests のインストール先を確認 ---
installed at: /usr/local/lib/python3.12/site-packages/requests

— 2026-06-01 時点の出力

この記事は役立ちましたか?