bpo-29592: site: skip abs_paths() when it's redundant (GH-167)
Call abs_paths() only if removeduppaths() changed sys.path
diff --git a/Lib/site.py b/Lib/site.py
index 0fc9200..4f96ca9 100644
--- a/Lib/site.py
+++ b/Lib/site.py
@@ -522,8 +522,13 @@
"""
global ENABLE_USER_SITE
- abs_paths()
+ orig_path = sys.path[:]
known_paths = removeduppaths()
+ if orig_path != sys.path:
+ # removeduppaths() might make sys.path absolute.
+ # fix __file__ and __cached__ of already imported modules too.
+ abs_paths()
+
known_paths = venv(known_paths)
if ENABLE_USER_SITE is None:
ENABLE_USER_SITE = check_enableusersite()