如何重新加载在其他模块中导入的模块

时间:2016-11-19 21:11:39

标签: python python-2.7 python-3.x

我在重新加载导入并在其他模块中使用的模块时遇到问题。为清楚起见,让我们考虑一下我有两个模块的例子:

第一个模块:operation.py

def f(x,y):
  return x+y

第二个模块:test_operation.py

import operation
x=3
y=4
z= operation.f(x,y)
print z

如果我去翻译并写下:

import test_operation

我将打印4张(z = 4)。如果我将第一个模块operation.py中的函数f更改为:

def f(x,y):
  return x+y+1

然后我在解释器重载(test_operation)中写入,我仍然会得到4个而不是5个。看来它重新加载了模块test_operation.py,但它没有重新加载模块operation.py即在test_operation.py中导入。

我该如何解决这个问题?在一般情况下,如何确保每次更改代码中的所有导入模块都重新导入(或重新加载)?

1 个答案:

答案 0 :(得分:0)

来自解释器:只需使用完整路径在operation模块上下文中重新加载test_operation

reload(test_operation.operation)

test_operation.py,您可以致电reload(operation),以便重新加载test_operation也会重新加载operation

这里进行完整的递归重载检查(不确定这是个好主意......):Recursive version of 'reload'