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

尝试在顶级包python之外进行相对导入

倪鹏
2023-03-14

如何在Python中从低级目录导入类?

我一直在阅读如何将__init__.py添加到文件夹中(或者这只是在Python2中吗?)或者如何使用from__future__.py import absolute_import,但是这些都不起作用。

通过下面的代码,我得到了:valueerror:尝试相对导入超出顶级包

from folder1.file1 import Class1
if __name__ == "__main__":
    Class1()
from ..folder2.file2 import Class2
class Class1:
    def __init__(self):
        print("Foo")
        Class2()

文件2.py

class Class2:
    def __init__(self):
        print("Bar")

谢谢你。

共有1个答案

詹联
2023-03-14

是的,您需要将__init__.py添加到Python需要查看的所有文件夹中(不管您的Python版本如何),例如,如果您有如下结构:

importing
- folder1
-- file1.py
- folder2
--file2.py
- main.py

您将希望它最终看起来如下所示:

importing
- __init__.py
- folder1
-- __init__.py
-- file1.py
- folder2
-- __init__.py
--file2.py
- main.py

也就是说,在folder1folder2import中需要__init__.py

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

  • 这是我的文件结构: MainDir/ |Foo.py |SubDir/ || ||Bar.py 富。py: 酒吧py: 通过这段代码,我试图从Foo中获取var的值,并将其保存在Bar中 我在运行Foo时遇到此错误。py(和Bar.py):ImportError尝试在顶级包之外进行相对导入 我知道有很多这样的问题,但是我没有通过查看所有的问题来解决它。我被困在这个问题上大约一周了。提前谢谢!

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

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

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

  • 问题内容: 似乎这里已经有很多关于python 3中相对导入的问题,但是经过许多讨论之后,我仍然找不到我问题的答案。所以这是问题。 我有一个如下所示的包裹 我在中只有一行: 现在,我在的文件夹中package,然后运行 我收到消息 但是如果我在的父文件夹中package,则运行: 一切都好。 现在我的问题是: 当我位于的文件夹中时,根据我的理解,我在test_A子软件包中运行模块,原因是,该模块.