diff -r df8292735bf4 Lib/site.py --- a/Lib/site.py Wed Apr 22 21:42:19 2009 -0700 +++ b/Lib/site.py Thu Apr 23 00:12:23 2009 -0700 @@ -161,11 +161,9 @@ def addsitedir(sitedir, known_paths=None): """Add 'sitedir' argument to sys.path if missing and handle .pth files in 'sitedir'""" - if known_paths is None: + reset = known_paths is None + if reset: known_paths = _init_pathinfo() - reset = 1 - else: - reset = 0 sitedir, sitedircase = makepath(sitedir) if not sitedircase in known_paths: sys.path.append(sitedir) # Add path component @@ -245,15 +243,30 @@ return known_paths +def add_prefixes(): + global ENABLE_USER_SITE, PREFIXES + prefix_path = os.environ.get("PYTHONPREFIXES", None) + if not (ENABLE_USER_SITE and prefix_path): + return + prefixes = [] + for prefix in prefix_path.split(os.pathsep): + prefix = prefix.rstrip(os.sep + (os.altsep or "")) + if os.path.isdir(prefix): + prefixes.append(prefix) + if prefixes: + PREFIXES = prefixes + PREFIXES + + + def addsitepackages(known_paths): """Add site-packages (and possibly site-python) to sys.path""" sitedirs = [] - seen = [] + seen = set() for prefix in PREFIXES: if not prefix or prefix in seen: continue - seen.append(prefix) + seen.add(prefix) if sys.platform in ('os2emx', 'riscos'): sitedirs.append(os.path.join(prefix, "Lib", "site-packages")) @@ -500,6 +513,7 @@ if ENABLE_USER_SITE is None: ENABLE_USER_SITE = check_enableusersite() known_paths = addusersitepackages(known_paths) + add_prefixes() known_paths = addsitepackages(known_paths) if sys.platform == 'os2emx': setBEGINLIBPATH()