Python 当类存在于模块中时,为什么我会得到ImportError?
我的项目在一个目录中只包含四个模块。在我尝试添加额外的设置菜单之前,一切正常。现在,当该模块中存在类时,我得到了Python 当类存在于模块中时,为什么我会得到ImportError?,python,import,project,importerror,Python,Import,Project,Importerror,我的项目在一个目录中只包含四个模块。在我尝试添加额外的设置菜单之前,一切正常。现在,当该模块中存在类时,我得到了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
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)
我不明白为什么会这样,对我来说一切似乎都很好。你能给我解释一下这种行为吗?我怎样才能纠正它
编辑:我已经改变了项目的结构,以避免注释中建议的循环导入依赖。更新的结构已启动(
dataclass记录
和值
在salary.py
和prefined.py
中临时复制)。我仍然收到相同的错误。您使用的是循环依赖项,这导致了此错误。我认为您提供的代码中的程序步骤如下:
作为将来的参考,我建议您阅读:这是否回答了您的问题@FlyingTeller@WGriffing谢谢你指出这一点。这是我第一次听说循环导入依赖性。我试图将
值
移动到新模块预定义的.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, )