Add a feature to support specifying an additional search directory for

packages.  (Mark Hammond)

Remove Emacs cruft.
This commit is contained in:
Guido van Rossum 1998-05-18 20:21:56 +00:00
parent 5109ffd607
commit f1b5a0e3aa
1 changed files with 17 additions and 4 deletions

View File

@ -22,6 +22,19 @@ if sys.platform=="win32":
IMPORT_NAME = dis.opname.index('IMPORT_NAME') IMPORT_NAME = dis.opname.index('IMPORT_NAME')
IMPORT_FROM = dis.opname.index('IMPORT_FROM') IMPORT_FROM = dis.opname.index('IMPORT_FROM')
# Modulefinder does a good job at simulating Python's, but it can not
# handle __path__ modifications packages make at runtime. Therefore there
# is a mechanism whereby you can register extra paths in this map for a
# package, and it will be honoured.
# Note this is a mapping is lists of paths.
packagePathMap = {}
# A Public interface
def AddPackagePath(packagename, path):
paths = packagePathMap.get(packagename, [])
paths.append(path)
packagePathMap[packagename] = paths
class Module: class Module:
@ -288,6 +301,10 @@ class ModuleFinder:
m = self.add_module(fqname) m = self.add_module(fqname)
m.__file__ = pathname m.__file__ = pathname
m.__path__ = [pathname] m.__path__ = [pathname]
# As per comment at top of file, simulate runtime __path__ additions.
m.__path__ = m.__path__ + packagePathMap.get(fqname, [])
fp, buf, stuff = self.find_module("__init__", m.__path__) fp, buf, stuff = self.find_module("__init__", m.__path__)
self.load_module(fqname, fp, buf, stuff) self.load_module(fqname, fp, buf, stuff)
self.msgout(2, "load_package ->", m) self.msgout(2, "load_package ->", m)
@ -405,7 +422,3 @@ if __name__ == '__main__':
test() test()
except KeyboardInterrupt: except KeyboardInterrupt:
print "\n[interrupt]" print "\n[interrupt]"
# Local Variables:
# indent-tabs-mode: nil
# End: