plugins: on some systems plugins with relative imports failed to load

this caused electrum to fail to start
potentially only older python 3.6.x are affected

fixes #5421
This commit is contained in:
SomberNight 2019-06-12 20:07:36 +02:00
parent 29ce50a305
commit 811169da4b
No known key found for this signature in database
GPG key ID: B33B5F232C6271E9

View file

@ -27,6 +27,7 @@ import pkgutil
import importlib.util
import time
import threading
import sys
from typing import NamedTuple, Any, Union, TYPE_CHECKING, Optional
from .i18n import _
@ -73,6 +74,9 @@ class Plugins(DaemonThread):
raise Exception(f"Error pre-loading {full_name}: no spec")
try:
module = importlib.util.module_from_spec(spec)
# sys.modules needs to be modified for relative imports to work
# see https://stackoverflow.com/a/50395128
sys.modules[spec.name] = module
spec.loader.exec_module(module)
except Exception as e:
raise Exception(f"Error pre-loading {full_name}: {repr(e)}") from e