Python 模块和 __all__

Ale*_*.P. 4 python module

我试图了解如何使用__all. 例如,我有以下结构化代码:

main.py
|=> /database
    |=> __init__.py
    |=> engine (with variables engine, session, etc.)
Run Code Online (Sandbox Code Playgroud)

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

from database import session
Run Code Online (Sandbox Code Playgroud)

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

有什么办法可以实现想要的行为吗?

Mar*_*ers 5

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

导入sessiondatabase/__init__.py

from .engine import session
Run Code Online (Sandbox Code Playgroud)