尝试相对导入超出***包 python
Posted
技术标签:
【中文标题】尝试相对导入超出***包 python【英文标题】:attempted relative import beyond top-level package python 【发布时间】:2020-04-06 01:06:02 【问题描述】:如何从python中的低级目录导入类?
我一直在阅读有关如何将 __init__.py
添加到我的文件夹(或者这仅在 python2 中?)或如何使用 from __future__.py import absolute_import
的信息,但这些都不起作用。
使用下面的代码,我得到:ValueError:尝试相对导入超出***包
我也尝试过像from .folder2.file2 import Class2
这样的导入,它给出了错误:ModuleNotFoundError: No module named '__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】:是的,您需要将__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__.py
in folder1
, folder2
, 和 importing
【讨论】:
在添加这些之后,我仍然会收到关于尝试相对导入超出***包的相同错误。 init.py 文件是否应该为空? 好的,必须从导入语句中删除两个点。非常感谢。以上是关于尝试相对导入超出***包 python的主要内容,如果未能解决你的问题,请参考以下文章