def import_module( self, partnam, fqname, parent ): depth = self._depth if depth is None or len( self._callerStack ) <= depth: r = ModuleFinder.import_module( self, partnam, fqname, parent ) if r is not None: self._depNode.addDepedency( self._callerStack +[ r.__file__ ] ) return r
def packModule(name): importOrder = [] importOrder = [] finder = ModuleFinder() old_addModule = finder.add_module def addModule(fqname): if fqname.startswith(name): #print fqname if fqname not in importOrder: importOrder.append(fqname) return old_addModule(fqname) finder.add_module = addModule finder.import_module(name, name, None) # hack for yaml importOrder = [ 'yaml', 'yaml.error', 'yaml.tokens', 'yaml.events', 'yaml.nodes', 'yaml.reader', 'yaml.scanner', 'yaml.composer', 'yaml.constructor', 'yaml.resolver', 'yaml.parser', 'yaml.loader', 'yaml.emitter', 'yaml.serializer', 'yaml.representer', 'yaml.dumper', ] global template template += '{0}=types.ModuleType("{0}","None");'.format(name) template += '{}.__dict__["__builtins__"]=__builtins__;'.format(name) template += 'sys.modules["{0}"]={0};'.format(name) for n in importOrder: if not n.startswith(name): continue print 'packing {}'.format(n) if n == name: continue filename = n.replace('.','/')+'.pyc' modName = filename[len(name)+1:-4]#n.replace('.','_') template += '{}=types.ModuleType("{}","None");'.format(modName,filename[len(name)+1:-4]) template += '{}.__dict__["__builtins__"]=__builtins__;'.format(modName) template += '{}.__dict__["{}"]={};'.format(name, filename[len(name)+1:-4], modName) template += 'sys.modules["{0}"]={0};'.format(modName) with open(filename, 'rb') as f: data = f.read()[8:] template += 'exec marshal.loads({}) in {}.__dict__;'.format(repr(data), modName) for n in importOrder: filename = n.replace('.','/')+'.pyc' modName = filename[len(name)+1:-4]#n.replace('.','_') if len(modName)>0: template += 'del {};'.format(modName) with open(name+'/__init__.pyc', 'rb') as f: data = f.read()[8:] template += 'exec marshal.loads({}) in {}.__dict__;'.format(repr(data), name)
def packModule(name): importOrder = [] importOrder = [] finder = ModuleFinder() old_addModule = finder.add_module def addModule(fqname): if fqname.startswith(name): #print fqname if fqname not in importOrder: importOrder.append(fqname) return old_addModule(fqname) finder.add_module = addModule finder.import_module(name, name, None) # hack for yaml importOrder = [ 'yaml', 'yaml.error', 'yaml.tokens', 'yaml.events', 'yaml.nodes', 'yaml.reader', 'yaml.scanner', 'yaml.composer', 'yaml.constructor', 'yaml.resolver', 'yaml.parser', 'yaml.loader', 'yaml.emitter', 'yaml.serializer', 'yaml.representer', 'yaml.dumper', ] global template template += '{0}=types.ModuleType("{0}","None");'.format(name) template += '{}.__dict__["__builtins__"]=__builtins__;'.format(name) template += 'sys.modules["{0}"]={0};'.format(name) for n in importOrder: if not n.startswith(name): continue print 'packing {}'.format(n) if n == name: continue filename = n.replace('.', '/') + '.pyc' modName = filename[len(name) + 1:-4] #n.replace('.','_') template += '{}=types.ModuleType("{}","None");'.format( modName, filename[len(name) + 1:-4]) template += '{}.__dict__["__builtins__"]=__builtins__;'.format(modName) template += '{}.__dict__["{}"]={};'.format(name, filename[len(name) + 1:-4], modName) template += 'sys.modules["{0}"]={0};'.format(modName) with open(filename, 'rb') as f: data = f.read()[8:] template += 'exec marshal.loads({}) in {}.__dict__;'.format( repr(data), modName) for n in importOrder: filename = n.replace('.', '/') + '.pyc' modName = filename[len(name) + 1:-4] #n.replace('.','_') if len(modName) > 0: template += 'del {};'.format(modName) with open(name + '/__init__.pyc', 'rb') as f: data = f.read()[8:] template += 'exec marshal.loads({}) in {}.__dict__;'.format( repr(data), name)