Как я могу знать, если я уже импортировал модуль и перезагрузил его, если он был изменен? - PullRequest
0 голосов
/ 16 октября 2018

Я сделал класс, в котором у меня есть модель.Я также сделал графический интерфейс QT, который позволяет мне выбрать файл (.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__, но у меня нет доступа к нему.

...