changeset f20c2e42084a in tryton:default
details: https://hg.tryton.org/tryton?cmd=changeset;node=f20c2e42084a
description:
Use FileFinder and SourceFileLoader to load plugins
On frozen environment using import_module does not work because the
plugins
are not in the PYTHONPATH.
issue8334
review253491002
diffstat:
tryton/plugins/__init__.py | 12 ++++++++++--
1 files changed, 10 insertions(+), 2 deletions(-)
diffs (29 lines):
diff -r ea01c375d7cb -r f20c2e42084a tryton/plugins/__init__.py
--- a/tryton/plugins/__init__.py Mon May 06 14:46:45 2019 +0200
+++ b/tryton/plugins/__init__.py Mon May 13 22:39:27 2019 +0200
@@ -23,15 +23,23 @@
imported = set()
for path in paths:
+ finder = importlib.machinery.FileFinder(
+ path, (
+ importlib.machinery.SourceFileLoader,
+ importlib.machinery.SOURCE_SUFFIXES))
for plugin in os.listdir(path):
module = os.path.splitext(plugin)[0]
if (module.startswith('_') or module in imported):
continue
module = 'tryton.plugins.%s' % module
+ spec = finder.find_spec(module)
+ if not spec:
+ continue
+ module = importlib.util.module_from_spec(spec)
try:
- module = importlib.import_module(module)
- MODULES.append(module)
+ spec.loader.exec_module(module)
except ImportError:
continue
else:
+ MODULES.append(module)
imported.add(module.__name__)