【问题标题】: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是否要求你的模块在子包中才能相对导入父包的内容?

【问题讨论】:

标签: python python-3.x


【解决方案1】:

对我来说,它通过以下方式得到解决:

  1. 先导入目录(import dir)
  2. 然后尝试导入视图/类(从目录导入视图/类)

【讨论】:

    【解决方案2】:

    解决: 将 init.py 添加到所有相关目录。

    添加 sys.path.append("..") 从同级目录导入之前。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-07
      • 2020-04-06
      • 1970-01-01
      • 2020-12-03
      • 2021-10-03
      • 2020-11-03
      • 2017-02-22
      相关资源
      最近更新 更多