在办公室,我们有一个以公司名称命名的库和它的子库内部,每个项目或多或少,并且在每个子库中可能有更多的模块或库。我们使用Django的,这使得我们的层次结构中的几个步骤更深......从库中深入导入子模块
我有点困扰有关以下导入说明之间的差异:
1:
import company.productline.specific.models, company.productline.base.models specific, base = company.productline.specific, company.productline.base2:
import company.productline.specific.models, company.productline.base.models from company.productline import specific, base只有
from company.productline import specific, base import company.productline.specific.models, company.productline.base.models
第一个样式进口models
:
3?那么在当前名称空间中提供的名称是specific
和base
?
如果一个模块导入第一个子模块并且只有后面的包含库,模块的初始化会发生什么?
也许最巧妙的风格是最后一个,它是明确的(至少对我来说),我先导入两个模块,并直接把他们的名字在当前名字空间和第二进口增加了model
子模块既刚刚导入的模块。
,(1)让我只导入内部模块,并指他们在一个紧凑的,虽然明路(specific.models
和base.models
)
不太确定这是否是问题,但我很想读评论。
我看了一下标准电子邮件包,其中包含各种深层次的模块,并且它没有定义`__all__`(仅适用于`from package import *`),相反,它使用懒惰的导入做了一些奇特的事情......非常有趣。尝试了一个包含`import models`的`__init __。py`,但是当python导入模型时,django会在后台执行什么操作,这使得不可能这样做(django扫描INSTALLED_APPS并假定它们已经存在,而python仍在导入它) – mariotomo 2009-07-29 13:35:04