#Что происходит и когда возникает ошибка
Команда pip install завершилась успешно, но приложение сообщает ModuleNotFoundError: установленный дистрибутив не обязательно доступен тому интерпретатору, которым запущена программа.
#Причины и признаки
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Разные интерпретаторыПакет был установлен не в то окружение. | pip --version и sys.executable указывают разные папки | Запускать pip через нужный Python. |
| Отличаются имена пакета и модуляИмя установки не обязано совпадать с импортируемым именем. | pip show находит дистрибутив, а import имя_дистрибутива не проходит | Найти правильный import в документации. |
| Локальный файл затеняет пакетPython подхватывает одноимённый локальный файл. | В стеке фигурирует собственный json.py, requests.py или похожий файл | Переименовать конфликтующий файл и проверить импорты. |
#Подробная диагностика и исправление
- Запишите точную ошибку импортаЗапустите программу тем же способом, что при сбое: из терминала, редактора, службы или контейнера. Скопируйте первую строку
ModuleNotFoundError: No module named ...и путь к запускаемому скрипту. Не считайте текст послеNo module namedобязательно именем пакета на PyPI.
- Узнайте исполнитель, который запускает приложениеВ начале тестовой копии программы временно выведите
sys.executable, либо запустите команду в терминале, где воспроизводится ошибка. Путь определяет действующую среду; для Jupyter отдельно посмотрите интерпретатор ядра. - Дополнительная команда по темеLinux · Терминал (Bash)КомандаОбычный терминал; если приложение выполняется в сервисе/IDE, консоль должна соответствовать его интерпретатору.
python -c "import sys; print(sys.executable); print(sys.version)"
- Проверьте пакет именно этим интерпретаторомВ активном проектном окружении вызовите
python -m pip show, заменив название на имя устанавливаемого дистрибутива. Если пакет не найден, pip в этом Python не содержит его. Если найден, посмотрите Version и Location; один лишь успех старой командыpip installне подтверждает нужную среду.Linux · Терминал (Bash)КомандаLinux/macOS/Windows после активации требуемого окружения, без прав администратора.python -m pip --versionpython -m pip show ИМЯ_ДИСТРИБУТИВА
- Установите в нужное окружениеСохраните текущие зависимости проекта, затем установите выбранный дистрибутив через
python -m pip installиз среды приложения. При наличииrequirements.txtпредпочтительнее версия, закреплённая проектом; не обновляйте всё без проверки совместимости.Linux · Терминал (Bash)С осторожностьюПрименять в отдельном .venv; на рабочем проекте сначала сохранить текущий список версий.python -m pip install ИМЯ_ДИСТРИБУТИВАКоманда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.
- Проверьте правильное имя импортаПосмотрите официальный пример библиотеки: например, дистрибутив может иметь дефисы в имени, а модуль — подчёркивания или полностью иное название. Проверьте именно документированный импорт. Если он всё ещё не проходит, временно переименуйте одноимённые файлы собственного проекта на копии и повторите.
- Согласуйте настройку IDE, задания и службыВ настройках проекта выберите интерпретатор из той же
.venv; в планировщике, службе или задании используйте полный путь к Python окружения. Повторите запуск исходным способом. Если ошибка осталась, посмотрите путь импорта в полном стеке, не устанавливайте пакеты вслепую.
#Проверка результата и действия при неуспехе
Запуск тем же способом, который прежде падал, теперь проходит нужный import; версия и Location совпадают с выбранной средой.
Если исправление не помогло, вернитесь к точному сообщению об ошибке, сохраните версию Python, адрес целевого окружения и очищенный от секретов журнал; выясните, на каком шаге результат отличается от ожидаемого. Не изменяйте глобальный Python ради устранения сбоя проекта.