考虑一个例子,
我有一个包含模块列表的包:
/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
如何限制软件包或模块级别?
答案 0 :(得分:3)
from mypackage import mod2
或
from mypackage import mod1, mod3
答案 1 :(得分:0)
我不认为包应该控制谁以及如何导入它们,基本上包不应该知道他们的进口商。但是,如果您出于某些原因仍然这是一个好主意,您可以通过以下方式获取主文件名:
import __main__
main_file = __main__.__file__
然后修改您的
__all__
基于主文件名的模块属性。