Python 从应用程序的上层导入包
因此,我有一个结构如下的应用程序:Python 从应用程序的上层导入包,python,import,importerror,Python,Import,Importerror,因此,我有一个结构如下的应用程序: main.py core/__init__.py core/user_interface.py core/util/__init__.py core/util/widgets/__init__.py core/util/widgets/tab.py main.py文件导入以下内容: from core import user_interface 此操作成功运行,然后用户界面进行导入调用: import core.util.widgets.tab from
main.py
core/__init__.py
core/user_interface.py
core/util/__init__.py
core/util/widgets/__init__.py
core/util/widgets/tab.py
main.py文件导入以下内容:
from core import user_interface
此操作成功运行,然后用户界面进行导入调用:
import core.util.widgets.tab
from core import user_interface
然后,file tab.py有一个导入调用:
import core.util.widgets.tab
from core import user_interface
最后一次导入失败并返回错误:
ImportError: cannot import name user_interface
由于导入链正在断开,因此应用程序的执行或从终端导入用户界面模块的尝试失败,并出现此错误。我知道我在某个地方犯了一个非常基本的错误,但我对这件事已经束手无策了。如果有人能帮我解决这个问题,我将非常感激。这是一个循环导入。您正在从
user\u interface
执行import core.util.widgets.tab
,然后尝试从tab
内导入user\u interface
。这是一个永远不可能完成的进口,因为这两种进口的性质是相互依赖的。这篇文章更详细地讨论了它们:.我刚刚遇到了完全相同的问题-但只有在模块名为core
时才会出现。(我通过重命名模块证明了这一点,它工作得很好。重命名回core
,然后再次抛出ImportError
异常)
我对python相当陌生,但我认为这是由于python路径上已经存在另一个名为core
的模块(尽管我找不到)
我只需为我的模块(或者更确切地说是Django应用程序)选择一个不同的名称,就解决了这个问题。我的错误,手工打字导致的大脑故障。ui是用户界面。我将编辑上面的内容。tab.py中的完整导入行是:从核心导入ui、主机、事件、语言、导致此错误的路径:文件“/home/james/Documents/Projects/SCD/core/SCD/widget/tab.py”,第10行,从核心导入用户界面、主机、事件、语言、,路径导入错误:无法导入名称user\u interface有没有办法允许tab.py访问user\u interface.py的组件?我正在修改一些代码,虽然实际的代码已经改变了很多,但是对于这两个文件,类似这样的导入顺序与原始应用程序中的导入顺序相同。因为同样的错误而编辑…嗯,显然我需要重构更多。想知道为什么原来的代码能工作。将代码
选项卡
所需从用户界面
移动到另一个他们都可以从中导入的模块可能是最简单的。