メモ。importしたときにロードされるモジュールを変更する。
import_main.py
#import sys; sys.modules['mod1'] = __import__('mod1a') # (1) import mod1 print "mod1 - loaded" import mod2 print "mod2 - loaded"
mod1.py
import mod2 print "This is mod1."
mod2.py
print "This is mod2."
mod3.py
print "This is mod3."
mod1a.py
import mod3 print "This is mod1a."
まずはそのまま実行。
>python import_main.py This is mod2. This is mod1. mod1 - loaded mod2 - loaded
mod1の中でmod2がロードされるので、2回目のロードではprintが実行されない。
次に(1)の行のコメントをはずして実行。
>python import_main.py This is mod3. This is mod1a. mod1 - loaded This is mod2. mod2 - loaded
mod1をロードしたつもりですが、printが実行されません。へー。