Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从应用程序的上层导入包_Python_Import_Importerror - Fatal编程技术网

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的组件?我正在修改一些代码,虽然实际的代码已经改变了很多,但是对于这两个文件,类似这样的导入顺序与原始应用程序中的导入顺序相同。因为同样的错误而编辑…嗯,显然我需要重构更多。想知道为什么原来的代码能工作。将代码
选项卡
所需从
用户界面
移动到另一个他们都可以从中导入的模块可能是最简单的。