首页 > 解决方案 > ImportError:尝试相对导入超出顶级包

问题描述

我已经研究了一天多,但不完全理解为什么我配置的东西不起作用,所以我在 StackOverflow 上问了一个被问了 5000 次的问题(此时它是 Python 的 UX 问题?)。我目前有一个项目,它有一个用于加载其他模块的主模块。这是我的文件结构:

E:\Python\SWISSARMY
│ swisscore.py
│
└────模块
    │ nmapper.py
    │ __init__.py
    │
    └────__pycache__
            nmapper.cpython-39.pyc
            __init__.cpython-39.pyc

Swisscore 被认为是我的“主要”包,所以我先加载它。从这里,有一个菜单选择,最终将加载 nmapper。

我想要做的是将我的函数从 swisscore 导入 nmapper,所以我在 nmapper.py 中尝试了以下操作

import subprocess,time,logging,os,sys
from ..swisscore import swissmenu

当我运行 swisscore 并加载 nmapper 时,立即抛出此错误:

Traceback (most recent call last):
  File "e:\Python\SwissArmy\swisscore.py", line 20, in <module>
    swissmenu()
  File "e:\Python\SwissArmy\swisscore.py", line 10, in swissmenu
    import modules.nmapper
  File "e:\Python\SwissArmy\modules\nmapper.py", line 4, in <module>
    from ..swisscore import swissmenu
ImportError: attempted relative import beyond top-level package

如果我能有一个我做错的 ELI5,那将是很棒的,因为我对此感到茫然。

先感谢您。

标签: python

解决方案


推荐阅读