Относительный импорт при прямом запуске
Вопрос
Файл app/services/report.py содержит from .db import query. Запуск python app/services/report.py падает с ImportError: attempted relative import with no known parent package. Как запустить правильно?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Варианты ответа
- Добавить
__init__.pyв корень диска python -m app.services.reportиз корня проектаправильный ответ- Заменить точку на две точки:
from ..db - Запустить с
sudo, чтобы был доступ к пакету
Разбор
При запуске файлом модуль получает имя __main__ без пакета, и относительному импорту не от чего отсчитывать. python -m app.services.report загружает модуль как часть пакета, и .db разрешается в app.services.db. Две точки только поднимут уровень выше, права доступа тут ни при чём.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Повторный импорт и sys.modules
Следующий вопрос
Свой файл перекрыл модуль стандартной библиотеки