我正在尝试将代码作为模块加载,然后在 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
。有没有更好的办法?