在辦公室,我們有一個以公司名稱命名的庫和它的子庫內部,每個項目或多或少,並且在每個子庫中可能有更多的模塊或庫。我們使用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