Моя упрощенная структура папок:
/lights
/lights/__init__.py
/lights/light.py
/lights/directional_light.py
main.py
У меня есть пакет python с именем lights, в \__init__.py
, я импортирую классы так:
from .light import Light
from .directional_light import DirectionalLight
from .spot_light import SpotLight
, так что я могу сделать из источников света импорт * в main.py
DirectionalLight
наследуется от Light, поэтому я импортирую Light там тоже так:
from lights import Light
Все работает.
НО Когда я использую «оптимизировать импорт» Pycharm, он меняется на
from .directional_light import DirectionalLight
from .light import Light
from .spot_light import SpotLight
И я получаю сообщение об ошибке:
ImportError: cannot import name 'Light' from 'lights'
Потому что сначала он идет в directional_light.py и пытается импортировать из light import Light, который еще не импортирован в \__init__.py
.
Интересно, почему Pycharm меняет порядок и разбивает материал. Это просто порядок по алфавиту?
Это заставляет меня сомневаться в импорте, который я делаю. Любые комментарии и предложения?