Python 2.7如何导入和重新导入

时间:2013-08-30 13:12:50

标签: python python-2.7

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

def ClickOpenMyFile(self):
    import myfileinquestion

如果已经导入,我希望不进行导入并导回...

支持工作吗?没错,但对我不起作用

try:
    import myfile
except:
    reload(myfile)

2 个答案:

答案 0 :(得分: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。所以抓住这个并执行正常的导入。

答案 1 :(得分:0)

首先,有很多类似的问题。例如,这一个:How do I unload (reload) a Python module?

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