what does the attached code do? the indentation is all messed up?
On Dec 30, 12:16 am, mart <[email protected]> wrote: > Really, I'm not trying to be funny... but where are the missing > modules? are they on the machine somewhere? or do they need to be > fetched from the net somewhere? > > This does seem like a great idea! Do we mean to load "unknown" modules > or install missing software? or both? this is what I do for > "unknown" (like missing) modules ... they only get loaded at build > time, this way I don't need to care what the build system is doing... > > hoep it helps, and apologies if you mean something else :) > > ''' > blueCmdHandler extends cmdBaseClass > ''' > def loadBuildCmd(self, > builtins=None): > > '''--- Use dictFunctionObject (DFO), to step through main sets > ---''' > '''--- * 1) retrieve _main_ sets DFO from objInit table > ---''' > rows = self.db(self.db.buildData.id>0).select() > last_row = rows.last() > dfo_main = cPickle.loads(last_row.get('dfo_main')) > > '''--- * 2) retrieve cmd_Init DFO from cmdObjects table > ---''' > rows = self.db(self.db.cmdObjects.id>0).select() > > '''--- * 3) retrieve cmd_Init DFO from cmdObjects table > retrieve all cmds/pyModules specified in build > file ---''' > for row in rows: > '''--- load serialized (pickled) data from data ---''' > cmdInit = > cPickle.loads(row.get('dfo_objCmd')) > '''--- iter through ---''' > if 'Cmd' in cmdInit.keys(): > '''--- > pyModule (i.e. blueLite.pyModules.cmdInit) is the path > to > the module to be invoked. Pass pyModule to blueCmd > > ---''' > pyModule = > cmdInit.Cmd.pyModule > try: > self.blueCmd(pyModule,row.name) > except Exception as > errObj: > err = cmdException.cmdPlugin(self.db,row.name) > > err.blueCmd(errObj,pyModule,all) > > def blueCmd(self, > chloe, > rowName, > builtIn_CmdName=None): > '''--- > chloe is the module to be __imported__ > > ---''' > if chloe is not None: > print("{0} will be processed by blueLite".format(chloe)) > '''--- > miaZoe is the named py class going to sys.modules > ---''' > try: > miaZoe = __import__(chloe) > components = chloe.split('.') > '''--- > split the path to named module, and collect > attributes > > ---''' > > for comp in components[1:]: > miaZoe = getattr(miaZoe, > comp) > > '''--- > caraAnne is now the object reference to class Chloe, > no need to > worry about __imported__ class since they inherit from > base class > call cmdPlugin, then blueCmd() > ---''' > > caraAnne = miaZoe.cmdPlugin(self.db, > rowName) > '''--- > step logic is in <pyModule>.cmd(). > ---''' > caraAnne.blueCmd() > '''--- > step is done, chuck object and class reference > ---''' > if caraAnne is not None: > del caraAnne > del miaZoe > > On Dec 29, 11:47 pm, mdipierro <[email protected]> wrote: > > > How about some code that is you try o timport a module that is not > > installed, trys to ez_install it? > > > import sys, imp > > from ez_setup import use_setuptools > > use_setuptools() > > from setuptools.command.easy_install import main > > > class SmartImporter(object): > > tried_modules=set() > > domain_modules = set() > > > def find_module(self, fullname, path=None): > > if fullname in self.domain_modules: > > return self > > if fullname in self.tried_modules: > > return None > > else: > > self.tried_modules.add(fullname) > > try: > > main([fullname]) > > return self > > except: > > return None > > > def load_module(self, fullname): > > if fullname in sys.modules: > > return sys.modules[fullname] > > mod = imp.new_module(fullname) > > mod.__loader__ = self > > sys.modules[fullname] = mod > > if fullname not in self.domain_modules: > > self.domain_modules.add(fullname) > > return mod > > > sys.meta_path = [SmartImporter()] > > > import tornado # is not installed should install it! > > print tornado > > > This does not quite works. I could use some help. > > > Massimo > >

