I agree. It would be alot better to import them in the scripts that actually need them. We have a ton of python tools, but we do not preimport them all dynamically. Its just too much overhead. What we end up doing in our tool button commands is something like: import myTool; myTool.run() The only python script we preimport is an environment script. I think I had something dynamic going on for our python plugin api tools, but we stopped doing that.
On Aug 5, 5:46 pm, Erkan Özgür Yılmaz <[email protected]> wrote: > Why you want to do that? It is not pythonic to import all the modules in > that way, your intention is completely wrong. It is bloating the default > name space with unneccesary modules. > > It is more correct if you just import the modules at time you need them by > just importing them at the beggining of your scripts or inside your > function/method. And by doing it so you will also be able to see where the > variables/functions/classes comming from. > > Cheers... > > E. Ozgur Yilmaz > Lead Technical Director > Imaj Animation & VFX Studios > eoyilmaz.blogspot.com > > Sent from my Galaxy S 2 > On Aug 5, 2011 10:14 PM, "Adam Mechtley" <[email protected]> wrote: > > > > > I'm not entirely clear what it is you are wanting to accomplish, but I'd > > think a better option would be execfile() > > > At any rate, to answer your question more directly, you could do something > > like: > > > *import* __main__ *as* m > > > *def* foo(modname): > > mod = __import__(modname) > > > m.__setattr__(modname, mod) > > > foo('shutil') > > > help(shutil) *# now this name exists in this context* > > > On Fri, Aug 5, 2011 at 2:03 PM, Renato Polimeno <[email protected] > >wrote: > > >> Thanks Adam, > >> could you please send me an example about that ? > > >> On Fri, Aug 5, 2011 at 3:58 PM, Adam Mechtley <[email protected] > >wrote: > > >>> You would need to add it as an attribute to __main__ for that to work > > >>> On Fri, Aug 5, 2011 at 1:50 PM, Renato Polimeno <[email protected] > >wrote: > > >>>> I don´t know why my result "is not defined" by the way, > >>>> I thought it would work using __import__ inside a def.. > > >>>> def importModule(modules): > >>>> for mod in modules: > >>>> try: > > >>>> module = __import__(mod) > >>>> for d in module.__dict__: > >>>> print mod, d, '\n' > > >>>> except ImportError: > >>>> print "Unable to import %s" % (mod) > > >>>> ## > >>>> importModule(["maya.cmds"]) > > >>>> maya.cmds.getAttr("someObj.tx") > >>>> # Error: NameError: name 'maya' is not defined # > > >>>> On Fri, Aug 5, 2011 at 1:26 PM, Renato Polimeno <[email protected] > >wrote: > > >>>>> Hey guys, I´m starting digging out some python codes and I´m testing > out > >>>>> my own def to 'batch import' necessary modules... ie. > > >>>>> def importModule(modules): > >>>>> try: > >>>>> for mod in modules: > >>>>> module = __import__(mod) > >>>>> for d in module.__dict__: > >>>>> print 'module= ', mod, 'dict=', d, '\n' > >>>>> # > >>>>> except ImportError: > >>>>> print "Unable to import %s" % (modules) > >>>>> # > > >>>>> Using importModule(["maya.cmds","pymel.core"]) works fine.. But how > >>>>> could I implement a list of strings more efficient like "import > maya.cmds as > >>>>> cmds" or "from pymel.core import *" ? > >>>>> Do you guys use something like this or is it better to keep it simple > >>>>> and standard? > > >>>>> Thanks, > > >>>>> -- > >>>>> ______________________________ > > >>>>> -> Renato Polimeno > >>>>> +55 11 7539 3615 > >>>>> renatopolimeno.com <http://www.renatopolimeno.com> > >>>>> <http://www.renatopolimeno.com/>facebook.com/renato.polimeno< > > http://www.facebook.com/renato.polimeno>>>>>> @renatopolimeno > <http://www.twitter.com/renatopolimeno> > > >>>> -- > >>>> ______________________________ > > >>>> -> Renato Polimeno > >>>> +55 11 7539 3615 > >>>> renatopolimeno.com <http://www.renatopolimeno.com> > >>>> <http://www.renatopolimeno.com/>facebook.com/renato.polimeno< > > http://www.facebook.com/renato.polimeno> > > > > >>>> @renatopolimeno <http://www.twitter.com/renatopolimeno> > > >>>> -- > >>>> view archives:http://groups.google.com/group/python_inside_maya > >>>> change your subscription settings: > >>>>http://groups.google.com/group/python_inside_maya/subscribe > > >>> -- > >>> view archives:http://groups.google.com/group/python_inside_maya > >>> change your subscription settings: > >>>http://groups.google.com/group/python_inside_maya/subscribe > > >> -- > >> ______________________________ > > >> -> Renato Polimeno > >> +55 11 7539 3615 > >> renatopolimeno.com <http://www.renatopolimeno.com> > >> <http://www.renatopolimeno.com/>facebook.com/renato.polimeno< > > http://www.facebook.com/renato.polimeno>>> @renatopolimeno > <http://www.twitter.com/renatopolimeno> > > >> -- > >> view archives:http://groups.google.com/group/python_inside_maya > >> change your subscription settings: > >>http://groups.google.com/group/python_inside_maya/subscribe > > > -- > > view archives:http://groups.google.com/group/python_inside_maya > > change your subscription settings: > > http://groups.google.com/group/python_inside_maya/subscribe -- view archives: http://groups.google.com/group/python_inside_maya change your subscription settings: http://groups.google.com/group/python_inside_maya/subscribe
