В наших проектах у нас есть уровень 'control' со следующими модулями: 'grid', 'gridcell', 'combo' и т. Д. Модуль Grid импортирует модуль Gridcell, поскольку сетка состоит из ячеек, в то время как любая ячейка может содержать комбо внутри. , Итак, изначально мы начали использовать операторы from ... import ... внутри этих классов следующим образом:
#grid.py
from controls.gridcell import cell
#gridcell.py
from controls.combo import combo
Но это было нормально, пока мы не начали использовать сетку в качестве комбо-контента. Как только мы начали это делать, нам потребовалось добавить оператор 'from grid import grid' в 'combo.py'. После этого мы получаем исключение при импорте:
from controls.gridcell import gridcell
ImportError: Cannot import name gridcell
РЕДАКТИРОВАНИЕ:
Я также попытался «импортировать ... как ...» и получил следующую ошибку:
import controls.gridcell as gridcell
AttributeError: 'module' object has no attribute 'gridcell'
Я прочитал несколько статей, и все, что я нашел о том, как решить эту проблему, это использовать оператор import без from, например:
#grid.py
import controls.gridcell
#gridcell.py
import controls.combo
#combo.py
import controls.grid
Но это заставляет нас использовать полные имена, такие как «controls.gridcell.cell», «controls.combo.combo», «controls.grid.grid» и т. Д.
Так что мой вопрос - есть ли другой способ, как это сделать (чтобы можно было использовать более короткие имена), или это единственный способ решить эту проблему?
Извините, если что-то пропустил
Спасибо всем