Не работает динамическая загрузка загруженных плагинов
Есть программа которая сперва скачивает с сервера самописный модуль, а потом использует его. Проблема возникла только в Astra-Linux. Модуль скачивается, но работать начинает только после перезапуска программы. Если её не перезапустить ошибка. Приветствуются любые предположения или идеи.
Нет такого файла или каталога: /path/mail_plugin.pyc.
ERROR Failed to load plugin "mail_plugin"
Этот же код на Ubuntu 18.04 работает нормально, без перезапусков.
Права при копировании проверял. Модуль скачивает в другом потоке ставил большее время ожидания. Сейчас модули загружаются при помощи. imp.load_compiled() Переписывал на importlib. Тоже не помогает.
Использовал дурацкий хак. В цикле начинаю проверять размер этого файла при помощи. os.path.getsize('абсолютный путь') - с абсолютным путём до модуля, только после этого его видит и загружает. Если использовать os.path.getsize('переменная') c переменной, которая идентична абсолютному пути ошибка остаётся.
if module_name not in sys.modules:
# Нужно задать явно путь для поиска зависимостей в плагинах
if module_path not in sys.path:
sys.path.append(module_path)
try:
# TODO fix deprecated method
# noinspection PyDeprecation
imp.load_compiled(module_name, path.join(module_path, module_name + COMPILED_EXTENSION))
except Exception:
try:
# TODO fix deprecated method
# noinspection PyDeprecation
imp.load_source(module_name, path.join(module_path, module_name + NOT_COMPILED_EXTENSION))
except Exception:
raise
return sys.modules[module_name]