bpo-41627: Distinguish 32 and 64-bit user site packages on Windows (GH-22098)
Also fixes the error message returned when sysconfig fails to interpolate a variable correctly.
This commit is contained in:
parent
51b84f8e96
commit
dd18001c30
|
@ -274,7 +274,8 @@ def _get_path(userbase):
|
||||||
version = sys.version_info
|
version = sys.version_info
|
||||||
|
|
||||||
if os.name == 'nt':
|
if os.name == 'nt':
|
||||||
return f'{userbase}\\Python{version[0]}{version[1]}\\site-packages'
|
ver_nodot = sys.winver.replace('.', '')
|
||||||
|
return f'{userbase}\\Python{ver_nodot}\\site-packages'
|
||||||
|
|
||||||
if sys.platform == 'darwin' and sys._framework:
|
if sys.platform == 'darwin' and sys._framework:
|
||||||
return f'{userbase}/lib/python/site-packages'
|
return f'{userbase}/lib/python/site-packages'
|
||||||
|
|
|
@ -53,12 +53,12 @@ _INSTALL_SCHEMES = {
|
||||||
},
|
},
|
||||||
# NOTE: When modifying "purelib" scheme, update site._get_path() too.
|
# NOTE: When modifying "purelib" scheme, update site._get_path() too.
|
||||||
'nt_user': {
|
'nt_user': {
|
||||||
'stdlib': '{userbase}/Python{py_version_nodot}',
|
'stdlib': '{userbase}/Python{py_version_nodot_plat}',
|
||||||
'platstdlib': '{userbase}/Python{py_version_nodot}',
|
'platstdlib': '{userbase}/Python{py_version_nodot_plat}',
|
||||||
'purelib': '{userbase}/Python{py_version_nodot}/site-packages',
|
'purelib': '{userbase}/Python{py_version_nodot_plat}/site-packages',
|
||||||
'platlib': '{userbase}/Python{py_version_nodot}/site-packages',
|
'platlib': '{userbase}/Python{py_version_nodot_plat}/site-packages',
|
||||||
'include': '{userbase}/Python{py_version_nodot}/Include',
|
'include': '{userbase}/Python{py_version_nodot_plat}/Include',
|
||||||
'scripts': '{userbase}/Python{py_version_nodot}/Scripts',
|
'scripts': '{userbase}/Python{py_version_nodot_plat}/Scripts',
|
||||||
'data': '{userbase}',
|
'data': '{userbase}',
|
||||||
},
|
},
|
||||||
'posix_user': {
|
'posix_user': {
|
||||||
|
@ -149,10 +149,10 @@ if _PYTHON_BUILD:
|
||||||
def _subst_vars(s, local_vars):
|
def _subst_vars(s, local_vars):
|
||||||
try:
|
try:
|
||||||
return s.format(**local_vars)
|
return s.format(**local_vars)
|
||||||
except KeyError:
|
except KeyError as var:
|
||||||
try:
|
try:
|
||||||
return s.format(**os.environ)
|
return s.format(**os.environ)
|
||||||
except KeyError as var:
|
except KeyError:
|
||||||
raise AttributeError('{%s}' % var) from None
|
raise AttributeError('{%s}' % var) from None
|
||||||
|
|
||||||
def _extend_dict(target_dict, other_dict):
|
def _extend_dict(target_dict, other_dict):
|
||||||
|
@ -431,6 +431,7 @@ def _init_non_posix(vars):
|
||||||
vars['EXE'] = '.exe'
|
vars['EXE'] = '.exe'
|
||||||
vars['VERSION'] = _PY_VERSION_SHORT_NO_DOT
|
vars['VERSION'] = _PY_VERSION_SHORT_NO_DOT
|
||||||
vars['BINDIR'] = os.path.dirname(_safe_realpath(sys.executable))
|
vars['BINDIR'] = os.path.dirname(_safe_realpath(sys.executable))
|
||||||
|
vars['TZPATH'] = ''
|
||||||
|
|
||||||
#
|
#
|
||||||
# public APIs
|
# public APIs
|
||||||
|
@ -543,10 +544,13 @@ def get_config_vars(*args):
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
# sys.abiflags may not be defined on all platforms.
|
# sys.abiflags may not be defined on all platforms.
|
||||||
_CONFIG_VARS['abiflags'] = ''
|
_CONFIG_VARS['abiflags'] = ''
|
||||||
|
try:
|
||||||
|
_CONFIG_VARS['py_version_nodot_plat'] = sys.winver.replace('.', '')
|
||||||
|
except AttributeError:
|
||||||
|
_CONFIG_VARS['py_version_nodot_plat'] = ''
|
||||||
|
|
||||||
if os.name == 'nt':
|
if os.name == 'nt':
|
||||||
_init_non_posix(_CONFIG_VARS)
|
_init_non_posix(_CONFIG_VARS)
|
||||||
_CONFIG_VARS['TZPATH'] = ''
|
|
||||||
if os.name == 'posix':
|
if os.name == 'posix':
|
||||||
_init_posix(_CONFIG_VARS)
|
_init_posix(_CONFIG_VARS)
|
||||||
# For backward compatibility, see issue19555
|
# For backward compatibility, see issue19555
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
The user site directory for 32-bit now includes a ``-32`` suffix to
|
||||||
|
distinguish it from the 64-bit interpreter's directory.
|
Loading…
Reference in New Issue