我有一个模块,结构如下:
/module
__init__.py
/submod_1
__init__.py
submod_1_class.py
/submod_2
__init__.py
submod_2_class.py但是,我发现在submod_1_class.py中导入一个类非常烦人,因为:
from module.submod_1.submod_1_class import my_class我希望能打字的是:
from module import my_class我浏览了site-packages文件夹,查看了像numpy这样的流行模块,但是我还没有弄清楚如何实现,例如:
import numpy
a = numpy.array([1,2,3,4,5])当numpy数组对象的定义深埋在numpy包的几个子文件夹中时,可以使用。
发布于 2015-03-24 00:08:05
您可以使用__init__.py文件来定义可以从给定模块编辑的import。例如,在您的结构中添加一个非常简单的附加项,就是从Class中提取submod_1_class,这样外部用户就可以简单地使用from module import Class。
/module
__init__.py
from submod_1 import Class
/submod_1
__init__.py
from submod_1_class import Class
submod_1_class.py
/submod_2
submod_2_class.py例如,在numpy中,顶级__init__.py包含读取以下内容的一条线:
from .core import *这意味着/core/__init__.py中定义的所有内容都可以直接在numpy命名空间中获得,即使它实际上可能隐藏在某种复杂的结构中。
https://stackoverflow.com/questions/29222428
复制相似问题