假设我有一个包“mylibrary”。通过sys.modules制作虚拟包
我想让“mylibrary.config”可用于导入,既可以作为动态创建的模块,也可以从完全不同的地方导入,然后基本上将“挂载”到“mylibrary”命名空间中。
也就是说,我做的:
import sys, types
sys.modules['mylibrary.config'] = types.ModuleType('config')
鉴于设置:
>>> import mylibrary.config # -> works
>>> from mylibrary import config
<type 'exceptions.ImportError'>: cannot import name config
更奇怪的是:
>>> import mylibrary.config as X
<type 'exceptions.ImportError'>: cannot import name config
如此看来,使用直接进口的作品,其他形式不要。是否有可能使这些工作以及?