从嵌套模块导入函数的简写



问题

我有以下目录结构:

.
└── main_module
├── __init__.py # init1
└── my_module
└── __init__.py # init2
└──my_module
└── __init__.py # init3
└── file1.py (with awesome_func())
└── file2.py

我想从file1.py导入awesome_func(),如下所示:

from main_module.my_module.file1 import awesome_func

这样我就不必像这样重复my_module了:

from main_module.my_module.my_module import awesome_func

我的(失败的(方法

我尝试过例如像这样修改init2

from .my_module import file1

它允许我这样做:

from main_module.my_module import file1
file1.awesome_func()

但还没有找到一种方法来实现我最初的意图:

from main_module.my_module.file1 import awesome_func

运行上面的线路当前收益率:

ModuleNotFoundError:没有名为'main_module.my_module.file1'的模块

我想我也需要修改init3,但我不确定如何修改。

__init__3中使用__all__并将file1.py导入为

from . import file1
__all_ = ['file1']

__init__2中执行

from .my_module import *
__all__ = ['file1']`

这将执行所需的导入方式

最新更新