(original) (raw)
import sys import imp class Importer(object): def __init__(self): self.registered_modules = {} def register(self, fullname, filename): self.registered_modules[fullname] = filename def find_module(self, fullname, path=None): if path is None: return Loader(self) class Loader(object): def __init__(self, importer): self.importer = importer def load_module(self, fullname): print "Trying", fullname filename = self.importer.registered_modules.get(fullname) if filename: print fullname, "was registered - load from", filename # Create a dummy for now, as I don't have time to code the full # filesystem lookup. mod = sys.modules.setdefault(fullname, imp.new_module(fullname)) mod.__file__ = "<%s>" % self.__class__.__name__ mod.__loader__ = self mod.__path__ = [filename] exec "pass" in mod.__dict__ return mod importer = Importer() sys.meta_path.append(importer) # Put code here to register module/path pairs from an environment variable # ... if __name__ == '__main__': # Trivial test importer.register("a", "C:\\Whatever") # C:\Whatever needs to contain a subdir b, containing __init__.py and c.py import a.b.c