Python中的“尝试相对导入超出***包”错误意味着啥?
Posted
技术标签:
【中文标题】Python中的“尝试相对导入超出***包”错误意味着啥?【英文标题】:What 'Attempted relative import beyond top-level package' error means in Python?Python中的“尝试相对导入超出***包”错误意味着什么? 【发布时间】:2019-11-18 01:25:59 【问题描述】:我正在使用 python 3.7 并遇到了一个相对导入错误“尝试相对导入超出***包”,其文件夹结构如下:
├── app
│ ├── __init__.py
│ ├── services
│ │ └── item_service.py
│ └── views
│ ├── home.py
│ ├── __init__.py
我的目标: 将变量 foo 从顶层 _init_.py 导入到 item_service.py 使用
from .. import foo
Pylint 在尝试此操作时会出现错误。
但是,home.py 中的导入语句完全相同,如果我将一个空的 _init_.py 文件添加到服务文件夹,则导入工作。 p>
所以我的问题是,为什么? python是否要求你的模块在子包中才能相对导入父包的内容?
【问题讨论】:
***.com/questions/30669474/…的可能重复 beyond top level package error in relative import的可能重复 Pylint 可能会解析包内的代码,但它应该保持在应用程序级别之下。如果只是 pylint,我暂时忽略它。 我认为 0 0 是对的。我有一个运行良好的项目,但 pylint 也给出了这个错误。 【参考方案1】:对我来说,它通过以下方式得到解决:
-
先导入目录(import dir)
然后尝试导入视图/类(从目录导入视图/类)
【讨论】:
【参考方案2】:解决: 将 init.py 添加到所有相关目录。
添加 sys.path.append("..") 从同级目录导入之前。
【讨论】:
以上是关于Python中的“尝试相对导入超出***包”错误意味着啥?的主要内容,如果未能解决你的问题,请参考以下文章