我上了一堂课,里面有一个模型。我还制作了一个QT GUI,允许我选择班级模型的文件(.py)以便导入和使用它。 我要寻找的是一种知道是否已经导入模块(对应于我选择的文件)并在模块更改后重新加载的方法。
要从路径导入我的模块,我使用:
fileName = QFileDialog.getOpenFileName(self,"Open Data File" , "", "data files (*.py)")
if fileName[0]=='':
return
fileName = str(fileName[0])
abspath = os.path.dirname(os.path.abspath(__file__))
self.fileName = os.path.relpath(fileName,abspath)
(filepath, filename) = os.path.split(fileName)
sys.path.append(filepath)
(shortname, extension) = os.path.splitext(filename)
mod = __import__(shortname)
我需要进行测试以了解是否导入或重新加载模块,而不是mod = __import__(shortname)
。
if shortname not in sys.modules:
mod = __import__(shortname)
else:
importlib.reload(__import__(shortname))
我尝试前面的代码。但是我仍然有一个问题。当我执行importlib.reload(__import__(shortname))
时,似乎在第一个导入和第二个导入之间修改模块时,仍会加载类的第一种形式。我在self.A=0
类中添加了__init__
,但是我没有权限。