コードをモジュールとしてロードし、同じモジュールをリロードしようとしていますが、Python でプログラムによって異なるコードを使用しています。
import imp
a = """
def test():
print "Hello from a"
"""
b = """
def test():
print "Hello from b"
"""
for code in [a, b]:
with open('user.py', 'wb') as f:
f.write(code)
mod = imp.load_source('user', 'user.py')
getattr(mod, "test")()
期待される出力:
Hello from a
Hello from b
実際の出力:
Hello from a
Hello from a
明らかに、それがどのように機能するかについての私の理解は正しくありませんが、自分の間違いを理解できないようです。
動作させる唯一の方法は、ファイルにコードを書き込む前に、生成された .pyc ファイルを削除することでしたf
。より良い方法はありますか?