Plugin system; imp module head scratch

Dave googlegroups at
Sun Dec 19 02:02:25 CET 2004

Hi, all,

I'm trying to implement a simple plugin framework, with some
unexpected results. I'm using Python 2.3.4 on Windows 2000.

My script loads plugin packages from a directory (in this
case its own), and checks a variable defined in the package's for information on the plugin.

The directory in which sits is itself a package::

        + Plugin1
        |    |

I must be misunderstanding how the imp module works, or something.
Although the correct package is returned by my helper method, its
member variables are those of the the parent package, plugin_test.

The output of this demo is::

<module 'Plugin1' from '__init__.pyc'>
Directory  plugin_test

Which seems contradictory. What have I got wrong?

Best Regards,


<Code follows>

This is plugin_test/Plugin1/

dir = "plugin_test/Plugin1"

This is plugin_test/

dir = "plugin_test"

And here is the loader script, plugin_test/

import os
import imp

def GetPackage(name, peerFile, relPath = '.'):
        Return the named Python package on a
        relative path from the file given
    path = os.path.normpath(
    os.path.join(os.path.dirname(peerFile), relPath))
        fObj, path, descr = imp.find_module(name, [path])
    except ImportError:
        return None
    if descr[2] != imp.PKG_DIRECTORY:
        return None
        return imp.load_module(name, None, '', descr)
        return None

if __name__ == "__main__":
    pkg = GetPackage("Plugin1", __file__, '.')
    print pkg
    print "Directory ", pkg.dir

More information about the Python-list mailing list