2
As described here,在蟒蛇就可以使用sys.modules
替换当前模块实现:更换输入模块依赖
import somemodule
import sys
del sys.modules['somemodule']
sys.modules['somemodule'] = __import__('somefakemodule')
但如果import somemodule
在另一进口模块的代码完成它不工作:
在这个例子中:
CustomModule
import somemodule
def f():
print(somemodule.someFunction())
ClientCode
from CustomModule import f
import sys
del sys.modules['somemodule']
sys.modules['somemodule'] = __import__('somefakemodule')
f() #Will use `somemodule.someFunction`
到f
的通话将使用somemodule.someFunction
,不somefakemodule.someFunction
是否有可能使CustomModule
代替其使用的somemodule
为somefakemodule
,而不改变其码?也就是从ClientCode
。