当前位置: 首页 > 知识库问答 >
问题:

ImportError:尝试在顶级包之外进行相对导入。我真的被卡住了

鲜于仰岳
2023-03-14

这是我的文件结构:
MainDir/
|Foo.py
|SubDir/
||
||Bar.py

富。py:

global var
var = 'value'
from SubDir import Bar

酒吧py:

from ..Foo import var
print(var)

通过这段代码,我试图从Foo中获取var的值,并将其保存在Bar中
我在运行Foo时遇到此错误。py(和Bar.py):ImportError尝试在顶级包之外进行相对导入

我知道有很多这样的问题,但是我没有通过查看所有的问题来解决它。我被困在这个问题上大约一周了。提前谢谢!

共有2个答案

谢海阳
2023-03-14

您是否使用__init__. py创建了正确的Python包?此外,如果您将相同的文件相互导入,您可能会遇到循环导入错误。

我建议避免相对进口,而使用绝对进口。

鲁博赡
2023-03-14

替换:from... Foo import var by from Foo import var

那些正在努力超越顶级包装

\MainDir公司

\MainDir\Foo.py
\MainDir\SubDir\Bar.py

Foo.py

global var
var = 'value'
from SubDir import Bar

Bar.py

from Foo import var
print(var)
 类似资料:
  • 如何在Python中从低级目录导入类? 我一直在阅读如何将添加到文件夹中(或者这只是在Python2中吗?)或者如何使用,但是这些都不起作用。 通过下面的代码,我得到了:valueerror:尝试相对导入超出顶级包 文件2.py 谢谢你。

  • 为了更好地理解Python的导入系统是如何工作的,我在玩Python的导入系统时遇到了另一个问题。我有以下结构 在中有以下代码: 在中有以下内容: 但为什么?我该怎么解决呢?我正在从空闲中运行,应该被认为是一个包,因为它有文件。 第一个导入很好,但以下内容不起作用: 因为我试图从父包导入一些东西,但显然我不能,因为一些奇怪的原因。

  • 问题内容: 这是我的文件夹结构: 在我有: 在时: 现在,当我发出: 我得到: 由于“多份原件打印”是在sys.path中,并正确地解决它为什么抱怨相对进口上述顶层包? 这是顶层包 ? 顺便说一句,这是我向旧项目中添加测试的尝试-在Python测试包布局中曾提出过要求,但作为Python单元测试去哪儿的副本被关闭了。对我当前的测试包布局的评论深表感谢! 那么下面的答案不适用于我的情况: 该 模块

  • 问题内容: 我的项目存在以下问题,请帮帮我!这是我的包裹的结构: 这是foo1.py的实现: 当我运行foo1时,出现错误: ValueError:尝试了相对于顶级包的相对导入 。 我可以通过以下调整来解决它: 但是我想知道是否有一种方法可以不导入sys并在其中附加父目录。 我听说,例如,如果我有.py文件’/pkg/start.py’,它调用了我的foo1模块,那么两个点就可以了。但是,有什么方

  • python 3.7.7,并在python 3.6.0上试用 我正在使用Django服务器,在我的views.py中 我正试着在探测器里得到我的函数。 我,我把我的探测器文件作为一个包返回到一个文件中, 我阅读了关于这个问题的所有stackoverflow问题。

  • 我是一个新手。我刚刚开始写一个django项目。它被称为iRayProject,由两个应用程序iRay_user_authentication和iRay_working_with_notes组成:这里的项目结构 iRay_user_authentication - 这是一个用于注册的标准django应用程序 这是他的urls.py 在 views.py 注册用户使用重定向我想发送到项目的第二个应用