有没有可能立即重新加载Python模块?

时间:2010-11-08 20:14:23

标签: python import reload

在导入这些模块后,是否可以立即重新加载这些模块?这是我正在审查的代码让我感到奇怪:

import time
import sys
import os
import string
import pp
import numpy
import nrrd
reload(nrrd)
import smooth as sm
reload(sm)
import TensorEval2C as tensPP
reload(tensPP)
import TrackFiber4C as trackPP
reload(trackPP)
import cmpV
reload(cmpV)
import vectors as vects
reload(vects)

编辑:我建议这可能会使.pyc文件的创建更有可能,但是有几个人指出这种情况每次都会发生这种情况。

4 个答案:

答案 0 :(得分:6)

这可能会导致某些事情发生;显而易见的例子是导入时发生的副作用。例如,模块可以将每次导入的时间和日期记录到文件中。

然而,可能没有充分的理由。

答案 1 :(得分:6)

我注意到标准模块刚刚导入:它是重新加载的其他模块。我希望编写此代码的人希望能够轻松地重新加载整个包(以便获得他们的最新编辑)。在完成所有这些冗余的reload调用之后,程序员只需编写

>>> reload(package)

在解释器中更新内容,而不必输入

>>> reload(package.nrrd)
>>> reload(package.sm)
>>> reload(package.tensPP)

等。所以请忽略你对写这个程序员的暴力行为的建议:他们是far from the only programmer,他们在重新加载依赖项时遇到了麻烦。只是鼓励他们将重新加载转移到便利功能。

答案 2 :(得分:1)

.pyc文件将在第一次导入时创建,所以即使这不是一个很好的理由。

答案 3 :(得分:0)

此代码的执行环境是什么?存在至少一个Python Web框架,它做出了与标准python不同的重新加载决策,当你进行不“采取”的更改时,这会导致沮丧和困惑。