Python PythonWindowsLinuxmacOS ModuleNotFoundErrorNo module named

Python: «ModuleNotFoundError: No module named» — как исправить

  • Обновлено
  • Чтение ≈ 5 минут

Краткий ответ

ModuleNotFoundError: No module named — Python не нашёл модуль в путях поиска текущего интерпретатора. Чаще всего пакет не установлен именно в тот Python или виртуальное окружение, из которого запускается программа; реже имя пакета для pip отличается от имени модуля для import, либо рядом лежит файл с тем же именем, который «затеняет» библиотеку. Выведите sys.executable и установите пакет командой python -m pip install … тем же интерпретатором.

В этой статье
  1. Что означает ошибка
  2. Причины и решения
  3. Пошаговая диагностика
  4. Шаги 2–3. Интерпретатор и установка
  5. Виртуальное окружение для проекта
  6. Таблица частых несовпадений имён
  7. Как проверить результат
  8. Если не помогло

#Что означает ошибка

ModuleNotFoundError
Traceback (most recent call last): File "app.py", line 1, in <module> import requests ModuleNotFoundError: No module named 'requests'
По-русскиМодуль с именем 'requests' не найден.

Когда вы пишете import имя, Python ищет модуль по списку путей sys.path — в папке скрипта, стандартной библиотеке и каталоге site-packages того интерпретатора, который запущен. Если модуль нигде не нашёлся, возникает эта ошибка. Ключевое слово — «того»: на компьютере часто несколько Python и несколько виртуальных окружений, и пакет мог быть поставлен в другой.

#Причины и решения

Возможная причинаКак узнатьЧто делать
Пакет просто не установленВы запускаете чужой код или новый проект и ещё не ставили зависимости.Ошибка при первом запуске; python -m pip show имя-пакета ничего не находит.Установите: python -m pip install имя-пакета или python -m pip install -r requirements.txt.
Пакет установлен в другой интерпретатор или окружениеpip относится к одному Python, а программа запускается другим — например, системным вместо виртуального окружения или наоборот.Команда pip install прошла успешно, но программа всё равно не находит модуль; в редакторе выбран другой интерпретатор.Узнайте sys.executable и ставьте пакеты через тот-же-python -m pip (шаг 2).
Имя пакета отличается от имени модуляПри установке указывается имя пакета, а при импорте — имя модуля, и они часто не совпадают.Пакет «установлен», но импорт cv2, PIL, yaml, sklearn или bs4 не работает.Ставьте пакет по его реальному названию: opencv-python, Pillow, PyYAML, scikit-learn, beautifulsoup4.
Локальный файл затеняет модульРядом со скриптом лежит файл или папка с тем же именем, что и нужная библиотека (например, random.py, requests.py).Ошибки вида partially initialized module или импорт берёт не ту версию; в папке проекта есть одноимённый файл.Переименуйте свой файл и удалите папку __pycache__ рядом с ним.
Собственный пакет не виден из места запускаИмпортируется ваш же модуль, но Python запущен из другого каталога, либо в папке пакета нет нужной структуры.Импорт работает из корня проекта, а при запуске из другой папки или в IDE — нет.Запускайте из корня проекта командой python -m пакет.модуль либо оформите проект как установимый пакет.

#Пошаговая диагностика

  1. Прочитайте имя модуляПрочитайте сообщение ModuleNotFoundError: No module named '...' до конца: запишите точное имя модуля, путь файла и команду запуска программы. Если сообщение содержит имя вроде requests, это может быть отсутствующий пакет, неправильное окружение или ошибка импорта. Откройте проект в редакторе и проверьте написание import: Python различает регистр символов. Если отсутствует модуль вашего проекта, его не нужно искать на PyPI — сначала проверьте структуру каталогов и способ запуска.
  2. Узнайте, какой Python запущенВ том же терминале, откуда запускаете программу, выполните python -c "import sys; print(sys.executable)" (Linux/macOS иногда нужен python3). Вы увидите полный путь к исполняемому Python. Затем выполните python -m pip --version и сравните путь установки pip; для окружения .venv оба пути должны указывать на него. Если редактор запускает другой интерпретатор, в VS Code нажмите Ctrl+Shift+P → «Python: Select Interpreter» и выберите Python нужного виртуального окружения; повторите запуск.
  3. Установите пакет тем же интерпретаторомЕсли действительно отсутствует внешняя библиотека, в терминале проекта с активным виртуальным окружением выполните python -m pip install requests, заменив requests правильным названием пакета. При ошибке externally-managed-environment сначала создайте python3 -m venv .venv, активируйте его и устанавливайте туда. Не запускайте sudo pip install: так можно повредить системную установку. Проверьте наличие командой python -m pip show requests, затем python -c "import requests; print(requests.__version__)" — команда сработает лишь для этого конкретного модуля. Проверьте, не отличается ли название пакета от импортируемого модуля. Например, официальный пакет Pillow устанавливается как python -m pip install Pillow, но импортируется from PIL import Image; OpenCV — пакет opencv-python, импорт cv2. Уточняйте эту пару по документации производителя библиотеки и зависимостям requirements.txt/pyproject.toml, а не по похожему названию из поисковой выдачи. Если пакет уже указан в проекте, устанавливайте согласованные зависимости через его штатный способ, а не случайную новую версию.
  4. Проверьте соответствие имёнЕсли модуль найден, но импорт не работает, посмотрите папку проекта на наличие локальных файлов requests.py, json.py, typing.py или папки с именем импортируемого пакета. Они могут скрывать установленную библиотеку. Переименовывайте только собственный файл после проверки ссылок на него и сделайте резервную копию; не удаляйте каталоги Python и __pycache__ целиком без понимания. С помощью python -c "import importlib.util; print(importlib.util.find_spec('requests'))" проверьте, откуда Python ожидает загрузить модуль (пример для requests).
  5. Поищите затеняющие файлыЕсли ошибка относится к собственному модулю проекта, проверьте, что запускаете программу из правильной папки и пакетный импорт соответствует структуре проекта. Вместо прямого запуска файла внутри пакета иногда требуется python -m имя_пакета.имя_модуля из корневого каталога. Не добавляйте произвольные глобальные пути в PYTHONPATH и не копируйте файлы библиотек в site-packages ради обхода ошибки. После исправления запустите исходный сценарий из той же среды и убедитесь, что тесты проходят; при новом исключении сохраните полный traceback.

#Шаги 2–3. Интерпретатор и установка

Linux · Терминал (Bash)Команда
Первые две команды — диагностика (Windows и некоторые Linux). Последняя проверяет установленный пакет и не меняет систему.
python -c "import sys; print(sys.executable)"
python -m pip --version
# Только если нужен пакет requests в активном окружении:
python -m pip show requests

#Виртуальное окружение для проекта

Чтобы зависимости разных проектов не смешивались, создавайте для каждого проекта отдельное окружение:

Linux · Терминал (Bash)Команда
Команда установки нужна лишь при наличии проверенного файла requirements.txt; на других системах активирование отличается.
# Linux/macOS; в папке проекта:
python3 -m venv .venv
. .venv/bin/activate
python -m pip install -r requirements.txt
Windows · Командная строка (CMD)Команда
Не требуется изменять политику выполнения PowerShell; применяется локальный интерпретатор. Имейте готовый requirements.txt.
# Windows PowerShell, в папке проекта:
py -m venv .venv
.venv\Scripts\python.exe -m pip install -r requirements.txt

#Таблица частых несовпадений имён

Импорт (модуль)Установка (пакет pip)
cv2opencv-python
PILPillow
yamlPyYAML
sklearnscikit-learn
bs4beautifulsoup4
dotenvpython-dotenv

#Как проверить результат

  • Команда python -c "import имя_модуля" завершается без ошибок.
  • python -m pip show имя-пакета показывает версию и путь внутри нужного окружения.
  • Программа запускается тем же способом (из терминала и из редактора).

#Если не помогло

Выведите sys.path и убедитесь, что в нём есть каталог site-packages вашего окружения. Проверьте, не запускается ли скрипт планировщиком, службой или Docker-контейнером с другим окружением — там зависимости нужно устанавливать отдельно. Для больших проектов закрепляйте версии в requirements.txt и пересоздайте окружение с нуля, если оно давно «обросло» пакетами.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 1 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.