mir*_*e2k 11 python import module
说我有一个包"mylibrary".
我想让"mylibrary.config"可用于导入,可以是动态创建的模块,也可以是从完全不同的地方导入的模块,然后基本上"挂载"在"mylibrary"命名空间内.
即,我做:
import sys, types
sys.modules['mylibrary.config'] = types.ModuleType('config')
Run Code Online (Sandbox Code Playgroud)
给定设置:
>>> import mylibrary.config # -> works
>>> from mylibrary import config
<type 'exceptions.ImportError'>: cannot import name config
Run Code Online (Sandbox Code Playgroud)
更奇怪的是:
>>> import mylibrary.config as X
<type 'exceptions.ImportError'>: cannot import name config
Run Code Online (Sandbox Code Playgroud)
因此,似乎使用直接导入工作,其他形式则不然.是否有可能使这些工作?
Mar*_*wis 14
您需要将模块不仅修补到sys.modules,还修复到其父模块:
>>> import sys,types,xml
>>> xml.config = sys.modules['xml.config'] = types.ModuleType('xml.config')
>>> import xml.config
>>> from xml import config
>>> from xml import config as x
>>> x
<module 'xml.config' (built-in)>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1927 次 |
| 最近记录: |