我试图了解如何使用__all
管理模块。例如,我有以下结构化代码:
main.py
|=> /database
|=> __init__.py
|=> engine (with variables engine, session, etc.)
现在我希望能够直接从session
模块导入engine
和database
个实例,如:
from database import session
我尝试将行__all__ = ['session']
或__all__ = ['engine.session']
添加到__init__py
但是当我尝试导入时,我遇到了异常AttributeError: 'modile' object has not attribute 'engine.session'
。
有没有办法实现想要的行为?
答案 0 :(得分:3)
__all__
中的列表名称本身不会将项目导入模块。如果您使用from database import *
语法,它所做的就是从该模块导入的列表名称。
将session
导入database/__init__.py
:
from .engine import session