Re: PEP 420 issue: extend_path
"Martin v. Löwis" <[email protected]>
| Newsgroups | gmane.comp.python.import |
|---|---|
| Message-ID | <[email protected]> |
> Are there any callers of find_module() outside of the standard library?
> That would be reason to invent a new API, instead of trying to reuse
> find_module().
Yes: the one I mentioned actually is in pkg_resources, which is part of
distribute:
def _handle_ns(packageName, path_item):
"""Ensure that named package includes a subpath of path_item (if
needed)"""
importer = get_importer(path_item)
if importer is None:
return None
loader = importer.find_module(packageName)
if loader is None:
return None
module = sys.modules.get(packageName)
if module is None:
module = sys.modules[packageName] = types.ModuleType(packageName)
module.__path__ = []; _set_parent_ns(packageName)
elif not hasattr(module,'__path__'):
raise TypeError("Not a package:", packageName)
handler = _find_adapter(_namespace_handlers, importer)
subpath = handler(importer,path_item,packageName,module)
if subpath is not None:
path = module.__path__; path.append(subpath)
loader.load_module(packageName); module.__path__ = path
return subpath
Regards,
Martin