@@ -124,7 +124,7 @@ def removeduppaths():
124
124
# if they only differ in case); turn relative paths into absolute
125
125
# paths.
126
126
dir , dircase = makepath (dir )
127
- if not dircase in known_paths :
127
+ if dircase not in known_paths :
128
128
L .append (dir )
129
129
known_paths .add (dircase )
130
130
sys .path [:] = L
@@ -234,6 +234,27 @@ def check_enableusersite():
234
234
235
235
return True
236
236
237
+
238
+ def _getuserbase ():
239
+ # Stripped version of sysconfig._getuserbase()
240
+ env_base = os .environ .get ("PYTHONUSERBASE" , None )
241
+ if env_base :
242
+ return env_base
243
+
244
+ def joinuser (* args ):
245
+ return os .path .expanduser (os .path .join (* args ))
246
+
247
+ if os .name == "nt" :
248
+ base = os .environ .get ("APPDATA" ) or "~"
249
+ return joinuser (base , "Python" )
250
+
251
+ if sys .platform == "darwin" and sys ._framework :
252
+ return joinuser ("~" , "Library" , sys ._framework ,
253
+ "%d.%d" % sys .version_info [:2 ])
254
+
255
+ return joinuser ("~" , ".local" )
256
+
257
+
237
258
def getuserbase ():
238
259
"""Returns the `user base` directory path.
239
260
@@ -242,33 +263,36 @@ def getuserbase():
242
263
it.
243
264
"""
244
265
global USER_BASE
245
- if USER_BASE is not None :
246
- return USER_BASE
247
- from sysconfig import get_config_var
248
- USER_BASE = get_config_var ('userbase' )
266
+ if USER_BASE is None :
267
+ USER_BASE = _getuserbase ()
249
268
return USER_BASE
250
269
270
+
271
+ def _get_path (userbase ):
272
+ # stripped version of sysconfig.get_path('purelib', os.name + '_user')
273
+ version = sys .version_info [:2 ]
274
+
275
+ if os .name == 'nt' :
276
+ return f'{ userbase } /Python{ version [0 ]} { version [1 ]} /site-packages'
277
+
278
+ if sys .platform == 'darwin' and sys ._framework :
279
+ return f'{ userbase } /lib/python/site-packages'
280
+
281
+ return f'{ userbase } /lib/python{ version [0 ]} .{ version [1 ]} /site-packages'
282
+
283
+
251
284
def getusersitepackages ():
252
285
"""Returns the user-specific site-packages directory path.
253
286
254
287
If the global variable ``USER_SITE`` is not initialized yet, this
255
288
function will also set it.
256
289
"""
257
290
global USER_SITE
258
- user_base = getuserbase () # this will also set USER_BASE
259
-
260
- if USER_SITE is not None :
261
- return USER_SITE
262
-
263
- from sysconfig import get_path
291
+ userbase = getuserbase () # this will also set USER_BASE
264
292
265
- if sys .platform == 'darwin' :
266
- from sysconfig import get_config_var
267
- if get_config_var ('PYTHONFRAMEWORK' ):
268
- USER_SITE = get_path ('purelib' , 'osx_framework_user' )
269
- return USER_SITE
293
+ if USER_SITE is None :
294
+ USER_SITE = _get_path (userbase )
270
295
271
- USER_SITE = get_path ('purelib' , '%s_user' % os .name )
272
296
return USER_SITE
273
297
274
298
def addusersitepackages (known_paths ):
0 commit comments