Почему не работает from

Пытаюсь понять Intra-package References Дерево проекта:

project/
       __init__.py
       main.py
       folder/
              __init__.py
              module_1.py
              module_2.py

В "module_2.py пишу:

def one():
    return 1

В "module_1.py пишу:

from . import module_2
print(module_2.one())

остальные файлы пустые

ошибка


Ответы (1 шт):

Автор решения: Roman Konoval

При запуске скрипта интерпретатор не знает родительский пакет, и потому относительный импорт не работает.

Если скрипт не верхнего уровня (а данном случае это так), то можно запустить скрипт как модуль: python -m folder.module_1, тогда питон будет знать родительский пакет.

Еще вариант явно провисать в модуле родительский пакет до относительного импорта:

if __name__ == "__main__" and __package__ is None:
    __package__ = 'folder'

В таком случае даже python folder/module_1.py будет работать при условии, что директория верхнего уровня указана в PYTHONPATH.

Подробности описаны тут

→ Ссылка