如何控制包中的模块导入python?

时间:2016-09-26 15:56:27

标签: 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

如何限制软件包或模块级别?

2 个答案:

答案 0 :(得分:3)

from mypackage import mod2

from mypackage import mod1, mod3

答案 1 :(得分:0)

我不认为包应该控制谁以及如何导入它们,基本上包不应该知道他们的进口商。但是,如果您出于某些原因仍然这是一个好主意,您可以通过以下方式获取主文件名:

import __main__
main_file = __main__.__file__

然后修改您的

__all__

基于主文件名的模块属性。