def get_module_constant(module, symbol, default=-1, paths=None): """Find 'module' by searching 'paths', and extract 'symbol' Return 'None' if 'module' does not exist on 'paths', or it does not define 'symbol'. If the module defines 'symbol' as a constant, return the constant. Otherwise, return 'default'.""" try: f, path, (suffix,mode,kind) = find_module(module,paths) except ImportError: # Module doesn't exist return None try: if kind==PY_COMPILED: f.read(8) # skip magic & date code = marshal.load(f) elif kind==PY_FROZEN: code = imp.get_frozen_object(module) elif kind==PY_SOURCE: code = compile(f.read(), path, 'exec') else: # Not something we can parse; we'll have to import it. :( if module not in sys.modules: imp.load_module(module,f,path,(suffix,mode,kind)) return getattr(sys.modules[module],symbol,None) finally: if f: f.close() return extract_constant(code,symbol,default)
def get_module_constant(module, symbol, default=-1, paths=None): """Find 'module' by searching 'paths', and extract 'symbol' Return 'None' if 'module' does not exist on 'paths', or it does not define 'symbol'. If the module defines 'symbol' as a constant, return the constant. Otherwise, return 'default'.""" try: f, path, (suffix, mode, kind) = find_module(module, paths) except ImportError: # Module doesn't exist return None try: if kind == PY_COMPILED: f.read(8) # skip magic & date code = marshal.load(f) elif kind == PY_FROZEN: code = imp.get_frozen_object(module) elif kind == PY_SOURCE: code = compile(f.read(), path, 'exec') else: # Not something we can parse; we'll have to import it. :( if module not in sys.modules: imp.load_module(module, f, path, (suffix, mode, kind)) return getattr(sys.modules[module], symbol, None) finally: if f: f.close() return extract_constant(code, symbol, default)
def load_module(self, fullname): try: return sys.modules[fullname] except KeyError: pass if imp.is_builtin(fullname): import freeze_external_modules try: imp.acquire_lock() py_package_context = freeze_external_modules.get_py_package_context() freeze_external_modules.set_py_package_context(fullname) return imp.init_builtin(fullname) finally: freeze_external_modules.set_py_package_context(py_package_context) imp.release_lock() else: if imp.is_frozen('freezer_package.' + fullname): co = imp.get_frozen_object('freezer_package.' + fullname) is_package = True else: co = imp.get_frozen_object("freezer." + fullname) # This may throw ImportError if not found. is_package = False try: imp.acquire_lock() mod = imp.new_module(fullname) if '__builtins__' not in mod.__dict__: mod.__dict__['__builtins__'] = __builtins__ mod.__file__ = "frozen/" + "/".join(fullname.split('.')) if is_package: mod.__path__ = [fullname] mod.__file__ = mod.__file__ + "/__init__" sys.modules[fullname] = mod eval(co, mod.__dict__, mod.__dict__) return mod finally: imp.release_lock()
def get_frozen_object(self, name): return imp.get_frozen_object(name) def load_source(self, name, filename, file=None):
def get_frozen_object(self, name): return imp.get_frozen_object(name)
def get_frozen_object(module, paths): return imp.get_frozen_object(module)
"""Import hook support.
def update_event(self, inp=-1): self.set_output_val(0, imp.get_frozen_object(self.input(0)))