'Retrieve a module from below this path or package.
@param modname: a str naming a module to be loaded.  For entries, this
is a top-level, undotted package name, and for packages it is the name
of the module without the package prefix.  For example, if you have a
PythonModule representing the \'twisted\' package, you could use::
twistedPackageObj[\'python\'][\'modules\']
to retrieve this module.
@raise: KeyError if the module is not found.
@return: a PythonModule.'

def __getitem__(self, modname):

    for module in self.iterModules():
        if (module.name == self._subModuleName(modname)):
            return module
    raise KeyError(modname)
