Почему не работает 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.
Подробности описаны тут