dynamic module import?

alex23 wuwei23 at gmail.com
Fri Jan 16 23:36:50 EST 2009


On Jan 17, 3:34 pm, Eduardo Lenz <l... at joinville.udesc.br> wrote:
> modu = "os"
> exec("from " + modu + " import *")

And of course, there's the usual disclaimer that this should be only
used in circumstances where you can guarantee the contents of 'modu'
aren't ever going to be anything like:

modu = "os import system; system('rm *'); from os "

Another reason to prefer __import__ over exec is speed:

$ /usr/lib/python2.5/timeit.py -n 100000 'from os import system'
100000 loops, best of 3: 2.12 usec per loop

$ /usr/lib/python2.5/timeit.py -n 100000 '__import__("os", fromlist=
["system"])'
100000 loops, best of 3: 2.72 usec per loop

$ /usr/lib/python2.5/timeit.py -n 100000 'm = "os"; exec("from " + m +
" import system")'
100000 loops, best of 3: 25.1 usec per loop



More information about the Python-list mailing list