【发布时间】:2020-02-27 14:44:20
【问题描述】:
我的项目在单个目录中仅包含四个模块。在我尝试添加其他设置菜单之前一切正常。现在,当该模块中存在类时,我得到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, )
我不明白为什么会这样,对我来说一切似乎都很好。你能解释一下这种行为吗?我该如何解决?
编辑:我已更改项目结构以避免循环导入依赖项,如 cmets 中所建议的那样。已更新结构(dataclass Record 和 VALUES 在 salary.py 和 predefined.py 中临时重复)。我仍然遇到同样的错误。
【问题讨论】:
-
这能回答你的问题吗? Python circular importing?
-
@FlyingTeller @WGriffing 感谢您指出这一点。这是我第一次听说循环导入依赖。我试图将
VALUES移动到新模块predefined.py,但仍然得到ImportError。
标签: python import project importerror