Я сохраняю конфигурацию в файле Python и перезагружаю. Поскольку он импортирует некоторые данные из текущего рабочего каталога, я хочу загрузить его переменные по пути.
Используя import_module и перезагрузив из importlib похоже, не поддерживает указание пути к файлу. Поэтому я использую SourceFileLoader и load_module.
read_file.py
import os
from importlib.machinery import SourceFileLoader
import time
class File:
file_path = "D:\\file.py"
file_modified = os.path.getmtime(file_path)
file = SourceFileLoader("", file_path).load_module()
def read(f) -> None:
try:
last_modified = os.path.getmtime(f.file_path)
if f.file_modified == last_modified:
print("Not updated")
return
print("Updated")
f.file_modified = last_modified
file = SourceFileLoader("", f.file_path).load_module()
print("X" in f.file.__dict__) # unexpectedly returns always True
except Exception as e:
print(e)
f = File()
print("X" in f.file.__dict__)
while True:
read(f)
time.sleep(1)
file.py
class X:
pass
Во время выполнения я переименовываю X в Y. Тем не менее, он все еще может получить доступ к X.
True
Not updated
Updated
True
Not updated
Updated
True
Not updated
Updated
True
Подробнее здесь: https://stackoverflow.com/questions/782 ... ation-file