通过sys.modules使虚拟包可用
发布于 2021-01-29 15:17:33
说我有一个包“ 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
因此,似乎使用直接导入作品,其他形式则没有。是否有可能使它们也起作用?
关注者
0
被浏览
46
1 个回答