Merge pull request #390 from return42/fix-312

[fix] don't mix loaded modules with imported modules (sys.modules)
This commit is contained in:
Alexandre Flament 2021-10-06 19:07:26 +02:00 committed by GitHub
commit adeb084cf4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1,5 +1,4 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import sys
import re import re
import importlib import importlib
@ -427,13 +426,10 @@ def match_language(locale_code, lang_list=[], custom_aliases={}, fallback='en-US
def load_module(filename, module_dir): def load_module(filename, module_dir):
modname = splitext(filename)[0] modname = splitext(filename)[0]
if modname in sys.modules:
del sys.modules[modname]
filepath = join(module_dir, filename) filepath = join(module_dir, filename)
# and https://docs.python.org/3/library/importlib.html#importing-a-source-file-directly # and https://docs.python.org/3/library/importlib.html#importing-a-source-file-directly
spec = importlib.util.spec_from_file_location(modname, filepath) spec = importlib.util.spec_from_file_location(modname, filepath)
module = importlib.util.module_from_spec(spec) module = importlib.util.module_from_spec(spec)
sys.modules[modname] = module
spec.loader.exec_module(module) spec.loader.exec_module(module)
return module return module