Мой проект содержит только четыре модуля в одном каталоге. Все работало нормально, прежде чем я попытался добавить дополнительное меню настройки. Теперь я получаю ImportError
, когда класс существует в этом модуле:
python3 -m project
Traceback (most recent call last):
File "/usr/lib64/python3.7/runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "/usr/lib64/python3.7/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "/home/project/__main__.py", line 1, in <module>
from project.gui import Window
File "/home/project/gui.py", line 4, in <module>
from project.document import Document
File "/home/project/document.py", line 3, in <module>
from project.salary import Salary
File "/home/project/salary.py", line 3, in <module>
from project.gui import Setup
ImportError: cannot import name 'Setup' from 'project.gui' (/project/gui.py)
Вот структура (модули, импорт, классы, данные) моего проекта:
* document.py
from project.salary import Salary
class Record
class Document
* gui.py
from project.document import Document
from project.predefined import VALUES
class Gui(tk.Tk)
class Window(Gui)
class Setup(Gui)
* __main__.py
from project.gui import Window
* salary.py
from project.gui import Setup
dataclass Record
VALUES = (Records, )
class Loader
class Salary
* predefined.py
dataclass Record
VALUES = (Records, )
Я не Я не понимаю, почему это происходит, мне кажется, все в порядке. Не могли бы вы объяснить, пожалуйста, это поведение и как я могу это исправить?
Редактировать: Я изменил структуру проекта, чтобы избежать циклической зависимости импорта, как это предлагается в комментариях. Обновлена структура (dataclass Record
и VALUES
временно дублированы в salary.py
и predefined.py
). Я все еще получаю ту же ошибку.