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
。