【发布时间】:2010-09-26 22:51:39
【问题描述】:
假设我有一个包“mylibrary”。
我想让“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
所以看起来使用直接导入有效,其他形式没有。是否有可能使这些工作也有效?
【问题讨论】: