使用点符号导入自定义包的子模块?

Importing a submodule of a custom package using the dot notation?

我猜这可能已经得到解答,但我的所有搜索都出现了其他导入问题。话又说回来,也许我只是不知道要搜索的正确术语。

如果我创建一个带有模块的包,似乎我可以在我的代码中使用 from mypackage import mymodule 来使用 mymodule。但是,我不能先用import mypackage再用mypackage.mymodule。有了这个,我得到一个 AttributeError: 'module' object has no attribute 'mymodule' 错误。为什么会这样,我该如何设置才能使用它?

我的包结构如下图所示。所有 __init__.py 都是空的。

myproject
  __init__.py
  mypackage
    __init__.py
    mymodule.py
  mymain.py # Doing the importing.

子模块未隐式导入。您将需要在 mypackage/__init__.py 中导入 .mymodule 除非您明确想要导入 mypackage.mymodule.