繁体   English   中英

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

[英]attempted relative import beyond top-level package python

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

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

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

我也试过from .folder2.file2 import Class2 ,这给出了错误: ModuleNotFoundError: No module named '__main__.folder2'; '__main__' 不是一个包

目录结构

主文件

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

文件1.py

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

文件2.py

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

谢谢你。

是的,您需要将__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

即你需要一个__init__.pyfolder1folder2importing

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM