← Все вопросы

ModuleNotFoundError: No module named — почему модуль не находится?

Задан 30 месяцев назад629 просмотров2 ответа
9

Делаю import requests, а Python ругается ModuleNotFoundError: No module named 'requests'. Я же установил всё! Чем отличается от ImportError и как заставить импорт работать?

2 ответа

13
✓ Принятый ответ — помог автору

ModuleNotFoundError (подвид ImportError) значит: Python не нашёл модуль с таким именем. Причины и решения:

  1. Модуль не установлен. Сторонние библиотеки (requests, numpy, pandas) нужно ставить отдельно:
pip install requests

В ноутбуке/некоторых системах: python -m pip install requests.

  1. Поставили в одно окружение, а запускаете другим Python. Очень частая беда: pip ставит в системный Python, а вы запускаете из виртуального окружения (или наоборот). Решение — ставить тем же интерпретатором, которым запускаете: python -m pip install <модуль>.

  2. Опечатка в имени. import beatifulsoup вместо from bs4 import BeautifulSoup. Имя при импорте часто отличается от имени пакета в pip (pip install beautifulsoup4, но import bs4).

  3. Свой файл назван как модуль. Если ваш файл называется random.py или math.py, Python импортирует его вместо стандартного. Переименуйте файл.

Проверить, куда смотрит Python, можно так: import sys; print(sys.executable) — это путь к тому интерпретатору, для которого и нужно ставить пакет.

5

Разница простая: ModuleNotFoundError — частный случай ImportError, когда сам модуль не найден. Обычный ImportError бывает ещё и когда модуль найден, но в нём нет нужного имени, например from math import sqrtt (опечатка) → ImportError: cannot import name 'sqrtt'. Тогда проверяйте не установку, а написание импортируемого имени.

Ваш ответ

Войдите, чтобы ответить на вопрос.