why import plugins used exec instead of __import__?

Alexander Belchenko bialix at ukr.net
Tue Jun 17 05:49:28 BST 2008


Some people and me discussed various plugin systems in other python forum and pointed at bzrlib 
implementation (bzrlib/plugin.py) as good example. Some people said they dislike using exec or eval 
in their programs. So bzrlib approach looks not the best. Specifically in bzrlib/plugin.py there is 
following code:

     for name in plugin_names:
         try:
             exec "import bzrlib.plugins.%s" % name in {}
         except KeyboardInterrupt:
             raise

Why there used exec and not __import__? IIUC import statement under the hood calls __import__,
so actually there is no big difference in functionality.
But instead exec must parse python code and then execute corresponding bytecode.

I don't remember when discussion about such change took place, and
can't find it in archives.
Can anyone comment this decision?
Thank you.




More information about the bazaar mailing list