diff --git a/worlds/__init__.py b/worlds/__init__.py index e36eb275..039f12eb 100644 --- a/worlds/__init__.py +++ b/worlds/__init__.py @@ -1,7 +1,9 @@ import importlib -import zipimport import os +import sys import typing +import warnings +import zipimport folder = os.path.dirname(__file__) @@ -39,7 +41,14 @@ world_sources.sort() for world_source in world_sources: if world_source.is_zip: importer = zipimport.zipimporter(os.path.join(folder, world_source.path)) - importer.load_module(world_source.path.split(".", 1)[0]) + spec = importer.find_spec(world_source.path.split(".", 1)[0]) + mod = importlib.util.module_from_spec(spec) + mod.__package__ = f"worlds.{mod.__package__}" + mod.__name__ = f"worlds.{mod.__name__}" + sys.modules[mod.__name__] = mod + with warnings.catch_warnings(): + warnings.filterwarnings("ignore", message="__package__ != __spec__.parent") + importer.exec_module(mod) else: importlib.import_module(f".{world_source.path}", "worlds")