如何使用 python 重新加载导入的文件?
def ClickOpenMyFile(self):
import myfileinquestion
如果已经导入,我希望取消导入并重新导入...
它应该工作吗?没有错误,但不适合我
try:
import myfile
except:
reload(myfile)
如何使用 python 重新加载导入的文件?
def ClickOpenMyFile(self):
import myfileinquestion
如果已经导入,我希望取消导入并重新导入...
它应该工作吗?没有错误,但不适合我
try:
import myfile
except:
reload(myfile)
好的,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。所以抓住这个然后执行正常的导入。
首先,有很多类似的问题。例如这个:如何卸载(重新加载)Python 模块?
没有通用的方法来跟踪已加载模块中的任何更改;您可能想自己跟踪任何更改。但是,如果源代码被更改,有一些可用的模块会执行重新加载。在某些情况下, tornado.autoreload可能对您有用。