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

2022-03-31 00:00:00 python python-3.x import python-import

问题描述

我猜这个问题可能已经得到了回答,但我的所有搜索都找到了其他重要的问题。话又说回来,也许我只是不知道该搜索什么词。

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

我的包结构如下所示。所有__init__.py%s均为空。

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

解决方案

子模块不会隐式导入。您将需要在mypackage/__init__.py中导入.mymodule,除非您明确希望导入mypackage.mymodule

相关文章