#Что означает ошибка
No module named
Ошибка ModuleNotFoundError: No module named 'имя' означает, что интерпретатор Python не нашёл модуль среди установленных пакетов. Чаще всего проблема не в том, что пакет не существует, а в том, что вы установили его в одном окружении, а запускаете код в другом. На машине обычно несколько версий Python, виртуальные окружения и IDE со своими интерпретаторами.
Поэтому первое, что стоит выяснить, — какой именно python выполняет ваш скрипт и в какой каталог pip устанавливает пакеты. Совпадение этих двух путей решает большинство случаев.
Установите пакет в нужное окружение и проверьте интерпретатор.
#Причины и решения
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Не установленПакет. | Проявляется как «No module named» или близкий по смыслу сбой. | pip install. |
| Другой pythonИнтерпретатор. | Проявляется как «No module named» или близкий по смыслу сбой. | Проверьте. |
| venv не активенОкружение. | Проявляется как «No module named» или близкий по смыслу сбой. | Активируйте. |
| ОпечаткаИмя. | Проявляется как «No module named» или близкий по смыслу сбой. | Исправьте. |
#Пошаговое решение
- Определите, какой Python запускает программуОткройте встроенный терминал редактора в папке проекта. Выполните
python -c "import sys; print(sys.executable)"иpython -m pip --version; в Windows при отсутствииpythonпопробуйтеpy -c "import sys; print(sys.executable)"иpy -m pip --version. Сравните пути: командаpipбезpython -mможет относиться к другому окружению. Запишите имя отсутствующего модуля точно из ошибки, включая регистр букв. - Активируйте окружение именно этого проектаЕсли рядом с проектом есть каталог
.venv, в Windows PowerShell запустите.\.venv\Scripts\Activate.ps1, в cmd —.venv\Scripts\activate.bat, в macOS/Linux —source .venv/bin/activate. При запрете исполнения PowerShell используйтеcmdлибо запускайте.venv\Scripts\python.exeнапрямую, не отключая общую политику безопасности. После активации повторите команду определенияsys.executable: путь должен указывать на.venv. - Установите правильный пакет и проверьте импортОткройте
requirements.txtилиpyproject.tomlи найдите зависимость, предоставляющую модуль: имя пакета при установке может отличаться от имени импорта (Pillow→PIL). В активном окружении выполнитеpython -m pip install -r requirements.txt, если файл существует, либоpython -m pip install ИМЯ_ПАКЕТАс реальным именем из официальной документации. Командойpython -m pip show ИМЯ_ПАКЕТАубедитесь, что пакет установлен в том же Python. Для неизвестного модуля не устанавливайте случайные одноимённые пакеты. - Проверьте имя файла, IDE и итоговый запускЕсли ошибка осталась, проверьте, нет ли в проекте файла
requests.py,email.pyили каталога с именем нужного модуля, который затеняет библиотеку. В настройках редактора укажите интерпретатор из.venvи перезапустите окно запуска. Выполните исходную команду и убедитесь, что отсутствует прежнийModuleNotFoundError; при новой ошибке сохраните всю трассировку,sys.executableи список пакетовpython -m pip list.
#Как проверить окружение
Выполните python -c "import sys; print(sys.executable)" и python -m pip --version. Пути должны указывать на одно и то же окружение. Всегда используйте форму python -m pip install пакет вместо просто pip: так пакет устанавливается именно для выбранного интерпретатора.
#Виртуальные окружения и IDE
Создайте окружение командой python -m venv .venv, активируйте его и установите зависимости из requirements.txt. В VS Code и PyCharm выберите интерпретатор проекта явно: IDE нередко запускает системный Python вместо окружения проекта. В Jupyter убедитесь, что ядро соответствует окружению.
#Прочие причины
Имя в импорте может отличаться от имени пакета (pip install pillow, но import PIL; scikit-learn и sklearn). Файл вашего проекта может называться так же, как и импортируемый модуль (random.py, requests.py) и «затенять» его. Для собственных пакетов проверьте наличие __init__.py и запуск из корня проекта.
python -m venv .venvsource .venv/bin/activatepython -m pip install -r requirements.txt