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