尽管有 init 文件,但为什么会发生“找不到模块”错误?

Why is a Module Not found error happening despite having the init file?

我在 Anaconda 中使用带有 Python 3.8 的 Spyder。我在同一目录中有文件 p、c、s、d 和 init。我正在发布相关行。

文件 p:

from s import C

文件:

class S():
from d import D

文件 c:

from .s import S
class C(S):

文件 d:

class D()

初始化文件:

from .s import S
from .c import C
from .d import D

文件p是这里的主要文件。当我 运行 它时,我得到一个模块未找到错误。追溯是

from s import C (file P)
from .s import S (init)
class S() (file s)
from d import  D (file s)

ModuleNotFoundError:没有名为 d 的模块。 为什么会这样?我正在使用 Mac.

如果您有一个包“mypackage”,

mypackage/
  __init__.py
  a.py
  b.py

并且mypackage/__init__.py

from .a import A
from .b import B

(但这并不重要) 然后 mypackage/b.py 可以通过相对导入

导入 A
from .a import A

或绝对导入

from mypackage.a import A

不是

from a import A