【发布时间】:2020-04-19 13:22:04
【问题描述】:
我的包裹看起来像这样:
/mypackage
|-- __init__.py
|-- moduleA.py
|-- moduleB.py
|-- oldModule.py
__init__.py 看起来像这样:
from mypackage.moduleA import abc
from mypackage.moduleB import jkl
这允许用户简单地编写如下代码:
import mypackage as mpkg
mpkg.abc()
mpkg.jkl()
默认情况下(使用上述import)用户无权访问oldModule.py中的功能。
这是因为 95% 的用户不需要这些东西(它已经过时了)。
对于需要oldModule功能的5%用户,可以这样写:
from mypackage.oldModule import xyz
xyz()
许多“oldModule”用户不需要访问__init__.py导入的功能
问题是,当用户只执行 from mypackage.oldModule import xyz
时,很明显整个 __init__.py 也在运行。
有什么办法可以
- 设置它,如果用户执行
from mypackage.oldModule import ...,则__init__.py不会运行,或 - 我可以查看导入语句的结构从
__init__.py内部,
以便我可以检测到用户做了from mypackage.oldModule import ...,
然后我可以在__init__.py中使用if块来决定要运行代码的哪些部分??
谢谢。
【问题讨论】:
标签: python-3.x python-import python-importlib