Почему ModuleNotFoundError, хотя файл лежит рядом?
У меня есть main.py и utils.py в одной папке. В main пишу import utils, а получаю ModuleNotFoundError: No module named 'utils'. Почему? Запускаю из VS Code.
3 ответа
Почти всегда дело в том, из какой папки реально запускается Python. import ищет модуль относительно текущей рабочей директории (и путей в sys.path), а не относительно расположения файла. Если ты запускаешь из другой папки, utils.py не находится.
Что проверить:
- Запусти из той же папки: перейди в неё в терминале и сделай
python main.py. - Посмотри, что видит Python:
import sys
print(sys.path)
import os
print(os.getcwd())
- Если файлы внутри пакета — импортируй с именем пакета или делай относительный импорт (
from . import utils), но тогда запускай черезpython -m.
В VS Code часто помогает поставить рабочую папку в настройках запуска или открыть именно ту папку как корень проекта.
Проверь, что не назвал свой файл так же, как стандартный модуль (например random.py или json.py) — тогда Python импортирует твой файл вместо библиотеки и всё ломается.
Запускай из папки с файлами или настрой рабочую директорию.