如何使用python重新加载导入的文件?
def ClickOpenMyFile(self):
import myfileinquestion
如果已经导入,我希望不进行导入并导回...
支持工作吗?没错,但对我不起作用
try:
import myfile
except:
reload(myfile)
答案 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可能对您有用。