尝试了相对于顶级软件包python

时间:2019-12-12 15:30:49

标签: python python-3.x import

如何从python的较低级目录中导入类?

我一直在阅读如何将__init__.py添加到我的文件夹(或者这仅在python2中使用)或我应该如何使用from __future__.py import absolute_import,但这些都不起作用。

使用下面的代码,我得到: ValueError:尝试相对顶级包进行相对导入

我也尝试过像from .folder2.file2 import Class2那样导入,它给出了错误: ModuleNotFoundError:没有名为'__main __。folder2'的模块; “ __main__”不是软件包

Directory structure

main.py

from folder1.file1 import Class1
if __name__ == "__main__":
    Class1()

file1.py

from ..folder2.file2 import Class2
class Class1:
    def __init__(self):
        print("Foo")
        Class2()

file2.py

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

谢谢。

1 个答案:

答案 0 :(得分:0)

是的,您需要向Python需要浏览的所有文件夹中添加一个__init__.py(无论您的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

即您需要在__init__.pyfolder1 folder2

中使用importing