ModuleNotFoundError: No module named
ModuleNotFoundError: No module named 'requests' значит, что Python, который запускает программу, не нашёл модуль с таким именем. Обычно пакет с этим модулем не поставлен или поставлен не в тот Python.
Если в сообщении имя вашего собственного файла (например, utils) или tkinter, pip не поможет — сразу смотрите разделы Модуль из своей папки и Модули, которых нет в pip.
Как исправить
Пробуйте по порядку, пока ошибка не пропадёт. Команды набирают в терминале — в командной строке Windows или в терминале Linux и macOS, а не в окне Python с приглашением >>> (как открыть терминал — в справке Как запустить файл .py).
Поставить пакет в тот же Python
Командная строка python -m pip install requestsВместо
requests— имя из сообщения об ошибке. В Linux и macOS команда —python3 -m pip install requests. Записьpython -m pipставит пакет именно в тот Python, который запускается командойpython.Программа запускается без ошибки — готово.
Проверить имя пакета
В
importпишется имя модуля, а вpip install— имя пакета, и они не всегда одинаковы:В программе Ставить import PILpip install pillowimport cv2pip install opencv-pythonimport bs4pip install beautifulsoup4import sklearnpip install scikit-learnimport yamlpip install pyyamlimport telebotpip install pyTelegramBotAPIimport dotenvpip install python-dotenvimport docxpip install python-docxПравильное имя пакета для установки обычно указано в документации библиотеки. Поставьте пакет под этим именем командой из шага 1.
После установки под правильным именем ошибка пропала — готово.
Не помогло — дальше: «Поставить пакет в тот Python, что запускает программу»
Поставить пакет в тот Python, что запускает программу
На компьютере бывает несколько Python: разные версии, Python внутри Thonny, виртуальные окружения. Узнать, какой именно запускает программу, можно, добавив в неё две строки:
Python import sys print(sys.executable)Программа выведет полный путь к
python.exe(в Linux — кpython3). Поставьте пакет этим Python, указав путь целиком (вместоC:\путь\из\вывода\python.exe— путь, который вывела программа):Командная строка "C:\путь\из\вывода\python.exe" -m pip install requestsЧастые случаи:
- VS Code запускает программу тем Python, который выбран как интерпретатор, — он виден в строке состояния внизу окна. Сменить его — команда Python: Select Interpreter (
Ctrl+Shift+P, затем начать набирать название). - Thonny по умолчанию работает со своим встроенным Python. Ставьте пакеты через меню Tools → Manage packages.
- Виртуальное окружение (
.venv— отдельная папка со своим Python и своими пакетами) не активировано: пакет стоит в.venv, а программа запущена системным Python. Как работать с окружением — в справке Виртуальное окружение venv.
Программа запускается без ошибки — пакет попал в нужный Python.
- VS Code запускает программу тем Python, который выбран как интерпретатор, — он виден в строке состояния внизу окна. Сменить его — команда Python: Select Interpreter (
Модуль из своей папки
Если модуль — ваш собственный файл, например utils.py, он должен лежать в той же папке, что и файл программы, а в import его имя пишется без .py: import utils. Python ищет модули прежде всего в папке запущенной программы.
Модули, которых нет в pip
Некоторые модули входят в сам Python, но в Linux вынесены в отдельные пакеты системы. Самый частый — tkinter для окон и кнопок. В Ubuntu и Debian он ставится так:
sudo apt install python3-tkСвой файл с именем модуля
Если файл программы называется так же, как модуль, — random.py, requests.py, telebot.py, — то import найдёт его, а не настоящий модуль. Ошибка тогда выглядит иначе: ImportError или AttributeError: module 'random' has no attribute 'randint'. Переименуйте свой файл, например в my_random.py.