ModuleNotFoundError: No module named — почему модуль не находится?
Делаю import requests, а Python ругается ModuleNotFoundError: No module named 'requests'. Я же установил всё! Чем отличается от ImportError и как заставить импорт работать?
2 ответа
ModuleNotFoundError (подвид ImportError) значит: Python не нашёл модуль с таким именем. Причины и решения:
- Модуль не установлен. Сторонние библиотеки (requests, numpy, pandas) нужно ставить отдельно:
pip install requests
В ноутбуке/некоторых системах: python -m pip install requests.
-
Поставили в одно окружение, а запускаете другим Python. Очень частая беда: pip ставит в системный Python, а вы запускаете из виртуального окружения (или наоборот). Решение — ставить тем же интерпретатором, которым запускаете:
python -m pip install <модуль>. -
Опечатка в имени.
import beatifulsoupвместоfrom bs4 import BeautifulSoup. Имя при импорте часто отличается от имени пакета в pip (pip install beautifulsoup4, ноimport bs4). -
Свой файл назван как модуль. Если ваш файл называется
random.pyилиmath.py, Python импортирует его вместо стандартного. Переименуйте файл.
Проверить, куда смотрит Python, можно так: import sys; print(sys.executable) — это путь к тому интерпретатору, для которого и нужно ставить пакет.
Разница простая: ModuleNotFoundError — частный случай ImportError, когда сам модуль не найден. Обычный ImportError бывает ещё и когда модуль найден, но в нём нет нужного имени, например from math import sqrtt (опечатка) → ImportError: cannot import name 'sqrtt'. Тогда проверяйте не установку, а написание импортируемого имени.