2013-08-30 93 views
0

如何使用python重新载入导入的文件?Python 2.7如何导入和重新导入

def ClickOpenMyFile(self): 
    import myfileinquestion 

我想这unimport和进口回来,如果已经进口...

据supposded工作?没有错误,但不为我工作

try: 
    import myfile 
except: 
    reload(myfile) 
+0

http://stackoverflow.com/questions/437589/how-do-i-unload-reload-a-python-module – Vladimir

+0

这不是为了重新加载,如果改变,但在任何情况下重新加载,如果已经加载 –

回答

0

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

假设您有以下内容的文件foo.py:

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

导入和reloding正常工作:

>>> 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 mported。所以赶上这一个,然后执行一个正常的导入。

0

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

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