Python模块和__all__

时间:2013-06-21 13:46:00

标签: python module

我试图了解如何使用__all管理模块。例如,我有以下结构化代码:

main.py
|=> /database
    |=> __init__.py
    |=> engine (with variables engine, session, etc.)

现在我希望能够直接从session模块导入enginedatabase个实例,如:

from database import session

我尝试将行__all__ = ['session']__all__ = ['engine.session']添加到__init__py但是当我尝试导入时,我遇到了异常AttributeError: 'modile' object has not attribute 'engine.session'

有没有办法实现想要的行为?

1 个答案:

答案 0 :(得分:3)

__all__中的列表名称本身不会将项目导入模块。如果您使用from database import *语法,它所做的就是从该模块导入的列表名称。

session导入database/__init__.py

from .engine import session