0

如何使用 python 重新加载导入的文件?

def ClickOpenMyFile(self):
    import myfileinquestion

如果已经导入,我希望取消导入并重新导入...

它应该工作吗?没有错误,但不适合我

try:
    import myfile
except:
    reload(myfile)
4

2 回答 2

0

好的,Python 中不存在真正的卸载。(正如弗拉基米尔已经提到的)

假设您有一个包含以下内容的文件 foo.py:

NAME = "MyName"
def foo_funct():
    print "foo.foo_funct called", NAME

导入和重新加载工作正常:

>>> import foo
>>> foo.foo_funct()
foo.foo_funct called MyName
>>> foo.NAME = "ANewName"
>>> foo.foo_funct()
foo.foo_funct called ANewName
>>> reload( foo )
<module 'foo' from 'foo.pyc'>
>>> foo.foo_funct()
foo.foo_funct called MyName

如果我理解正确,这就是你想要的:

try:
    reload(foo)
except NameError:
    import foo

如果 foo 尚未导入,则重新加载将失败并出现 NameError。所以抓住这个然后执行正常的导入。

于 2013-08-30T14:23:09.103 回答
0

首先,有很多类似的问题。例如这个:如何卸载(重新加载)Python 模块?

没有通用的方法来跟踪已加载模块中的任何更改;您可能想自己跟踪任何更改。但是,如果源代码被更改,有一些可用的模块会执行重新加载。在某些情况下, tornado.autoreload可能对您有用。

于 2013-09-02T08:46:37.453 回答