我想从我的子模块导入一个类,而不必使用from submodule.submodule import Class
语法。相反,我只想像from submodule import Class
一样正常的Python3模块。干净地导入自定义模块
我觉得这应该已经回答了一百万次,虽然在SO上有几个类似命名的问题,但没有一个提供了一个简单的解决方案,只有一个简单的例子。
我试图让最简单的测试与此设置工作:
.
├── main.py
└── test
├── __init__.py
└── test.py
在我test
模块,我有以下内容:
test.py
class Test:
def __init__(self):
print('hello')
__init__.py
from test import Test
__all__ = ['Test']
在上级main.py我有以下几点:
from test import Test
Test()
当我尝试运行main.py
我得到:
ImportError: cannot import name 'Test'
我知道我可以代替导入语句main.py
与from test.test import Test
,但我的理解是__init__.py
的要点之一是使子模块可以在包中访问GE水平(与__all__
允许导入所有from test import *
)