我如何知道我是否已经导入了模块并在修改后重新加载它?

时间:2018-10-16 14:43:06

标签: python class import reload

我上了一堂课,里面有一个模型。我还制作了一个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__,但是我没有权限。

0 个答案:

没有答案