← Все вопросы

Почему ModuleNotFoundError, хотя файл лежит рядом?

Задан 9 месяцев назад1.3к просмотров3 ответа
15

У меня есть main.py и utils.py в одной папке. В main пишу import utils, а получаю ModuleNotFoundError: No module named 'utils'. Почему? Запускаю из VS Code.

3 ответа

24
✓ Принятый ответ — помог автору

Почти всегда дело в том, из какой папки реально запускается Python. import ищет модуль относительно текущей рабочей директории (и путей в sys.path), а не относительно расположения файла. Если ты запускаешь из другой папки, utils.py не находится.

Что проверить:

  1. Запусти из той же папки: перейди в неё в терминале и сделай python main.py.
  2. Посмотри, что видит Python:
import sys
print(sys.path)
import os
print(os.getcwd())
  1. Если файлы внутри пакета — импортируй с именем пакета или делай относительный импорт (from . import utils), но тогда запускай через python -m.

В VS Code часто помогает поставить рабочую папку в настройках запуска или открыть именно ту папку как корень проекта.

Дмитрий Ушкин да, cwd был другой — запустил из правильной папки, заработало 🙏 · 8 месяцев назад
9

Проверь, что не назвал свой файл так же, как стандартный модуль (например random.py или json.py) — тогда Python импортирует твой файл вместо библиотеки и всё ломается.

серж погу о, у меня был email.py 😄 переименовал — починилось · 8 месяцев назад
4

Запускай из папки с файлами или настрой рабочую директорию.

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект