2016-09-26 43 views
-1

考慮一個例子,我如何控制包中的模塊來導入python?

我有模塊列表的包:

/mypackage/ 
    __init__.py 
    mod1.py 
    mod2.py 
    mod3.py 

prog1.py:我想只允許mod2這裏 prog2:允許mod1,2

如果我寫,

prog1.py 
import mypackage 
# only mod2 should import 

prog2.py 
import mypackage 
# only mod1,mod3 should import 

how ca n我限制在封裝或模塊級別?

+0

這是主要問題之一在很多基於python的訪談中! –

回答

0

我不認爲包應該控制誰,以及如何可以將其導入,基本上包應該不知道他們的進口商。但是,如果您由於某種原因仍東西,這是一個好主意,你可以通過一個主文件名:

import __main__ 
main_file = __main__.__file__ 

然後修改基於一個主文件名模塊所在

__all__ 

屬性。

+0

1.如果我們在模塊中編寫上面的代碼,我們可以獲得主腳本名稱嗎? 2.我們可以在__init__.py文件或模塊中寫上面的代碼嗎? –

3
from mypackage import mod2 

from mypackage import mod1, mod3 
+0

嗨丹妮,感謝您的迴應..在上面的代碼中,我們限制模塊導入我們的導入腳本,但我想限制模塊從包導入。我的意思是包級限制。 –