diff --git a/src/julia/core.py b/src/julia/core.py index a5cd3aea..5120b28f 100644 --- a/src/julia/core.py +++ b/src/julia/core.py @@ -191,7 +191,7 @@ def __try_getattr(self, name): if self._julia.isamodule(jl_fullname): realname = self._julia.fullname(self._julia.eval(jl_fullname)) if self._julia.isdefined(realname): - return self.__loader__.load_module("julia." + realname) + return self.__loader__.create_module(_find_spec_from_fullname("julia." + realname)) # Otherwise, it may be, e.g., "Main.anonymous", created by # Module(). @@ -225,14 +225,17 @@ def __setattr__(self, name, value): class JuliaImporter(MetaPathFinder): def find_spec(self, fullname, path=None, target=None): - if fullname.startswith("julia."): - filename = fullname.split(".", 2)[1] - filepath = os.path.join(os.path.dirname(__file__), filename) - if os.path.isfile(filepath + ".py") or os.path.isdir(filepath): - return - return ModuleSpec(fullname, JuliaModuleLoader(), origin=filepath) + return _find_spec_from_fullname(fullname) +def _find_spec_from_fullname(fullname): + if fullname.startswith("julia."): + filename = fullname.split(".", 2)[1] + filepath = os.path.join(os.path.dirname(__file__), filename) + if os.path.isfile(filepath + ".py") or os.path.isdir(filepath): + return + return ModuleSpec(fullname, JuliaModuleLoader(), origin=filepath) + class JuliaModuleLoader(Loader): @property def julia(self):