6666
6767
6868def makepath (* paths ):
69- dir = os .path .join (* paths )
70- return os .path .normcase (os . path . abspath ( dir ) )
69+ dir = os .path .abspath ( os . path . join (* paths ) )
70+ return dir , os .path .normcase (dir )
7171
72- L = sys .modules .values ()
73- for m in L :
72+ for m in sys .modules .values ():
7473 if hasattr (m , "__file__" ) and m .__file__ :
75- m .__file__ = makepath (m .__file__ )
76- del m , L
74+ m .__file__ = os . path . abspath (m .__file__ )
75+ del m
7776
7877# This ensures that the initial path provided by the interpreter contains
7978# only absolute pathnames, even if we're running from the build directory.
8079L = []
80+ dirs_in_sys_path = {}
8181for dir in sys .path :
82- dir = makepath (dir )
83- if dir not in L :
82+ dir , dircase = makepath (dir )
83+ if not dirs_in_sys_path . has_key ( dircase ) :
8484 L .append (dir )
85+ dirs_in_sys_path [dircase ] = 1
8586sys .path [:] = L
8687del dir , L
8788
@@ -95,14 +96,13 @@ def makepath(*paths):
9596 del get_platform , s
9697
9798def addsitedir (sitedir ):
98- sitedir = makepath (sitedir )
99- if sitedir not in sys . path :
99+ sitedir , sitedircase = makepath (sitedir )
100+ if not dirs_in_sys_path . has_key ( sitedircase ) :
100101 sys .path .append (sitedir ) # Add path component
101102 try :
102103 names = os .listdir (sitedir )
103104 except os .error :
104105 return
105- names = map (os .path .normcase , names )
106106 names .sort ()
107107 for name in names :
108108 if name [- 4 :] == endsep + "pth" :
@@ -125,29 +125,32 @@ def addpackage(sitedir, name):
125125 continue
126126 if dir [- 1 ] == '\n ' :
127127 dir = dir [:- 1 ]
128- dir = makepath (sitedir , dir )
129- if dir not in sys . path and os .path .exists (dir ):
128+ dir , dircase = makepath (sitedir , dir )
129+ if not dirs_in_sys_path . has_key ( dircase ) and os .path .exists (dir ):
130130 sys .path .append (dir )
131+ dirs_in_sys_path [dircase ] = 1
131132
132133prefixes = [sys .prefix ]
133134if sys .exec_prefix != sys .prefix :
134135 prefixes .append (sys .exec_prefix )
135136for prefix in prefixes :
136137 if prefix :
137138 if os .sep == '/' :
138- sitedirs = [makepath (prefix ,
139- "lib" ,
140- "python" + sys .version [:3 ],
141- "site-packages" ),
142- makepath (prefix , "lib" , "site-python" )]
139+ sitedirs = [os . path . join (prefix ,
140+ "lib" ,
141+ "python" + sys .version [:3 ],
142+ "site-packages" ),
143+ os . path . join (prefix , "lib" , "site-python" )]
143144 elif os .sep == ':' :
144- sitedirs = [makepath (prefix , "lib" , "site-packages" )]
145+ sitedirs = [os . path . join (prefix , "lib" , "site-packages" )]
145146 else :
146147 sitedirs = [prefix ]
147148 for sitedir in sitedirs :
148149 if os .path .isdir (sitedir ):
149150 addsitedir (sitedir )
150151
152+ del dirs_in_sys_path
153+
151154# Define new built-ins 'quit' and 'exit'.
152155# These are simply strings that display a hint on how to exit.
153156if os .sep == ':' :
0 commit comments