# DP: Add schemes 'deb_system' and 'posix_local', make the latter the default --- a/Lib/sysconfig.py +++ b/Lib/sysconfig.py @@ -32,6 +32,30 @@ 'scripts': '{base}/bin', 'data': '{base}', }, + 'deb_system': { + 'stdlib': '{installed_base}/lib/python{py_version_short}', + 'platstdlib': '{platbase}/lib/python{py_version_short}', + 'purelib': '{base}/lib/python3/dist-packages', + 'platlib': '{platbase}/lib/python3/dist-packages', + 'include': + '{installed_base}/include/python{py_version_short}{abiflags}', + 'platinclude': + '{installed_platbase}/include/python{py_version_short}{abiflags}', + 'scripts': '{base}/bin', + 'data': '{base}', + }, + 'posix_local': { + 'stdlib': '{installed_base}/lib/python{py_version_short}', + 'platstdlib': '{platbase}/lib/python{py_version_short}', + 'purelib': '{base}/local/lib/python{py_version_short}/dist-packages', + 'platlib': '{platbase}/local/lib/python{py_version_short}/dist-packages', + 'include': + '{installed_base}/local/include/python{py_version_short}{abiflags}', + 'platinclude': + '{installed_platbase}/local/include/python{py_version_short}{abiflags}', + 'scripts': '{base}/local/bin', + 'data': '{base}', + }, 'posix_home': { 'stdlib': '{installed_base}/lib/python', 'platstdlib': '{base}/lib/python', @@ -162,7 +186,7 @@ _PYTHON_BUILD = is_python_build(True) if _PYTHON_BUILD: - for scheme in ('posix_prefix', 'posix_home'): + for scheme in ('posix_prefix', 'posix_home', 'posix_local', 'deb_system'): _INSTALL_SCHEMES[scheme]['include'] = '{srcdir}/Include' _INSTALL_SCHEMES[scheme]['platinclude'] = '{projectbase}/.' @@ -200,7 +224,12 @@ def _get_default_scheme(): if os.name == 'posix': # the default scheme for posix is posix_prefix - return 'posix_prefix' + if 'real_prefix' in sys.__dict__ or 'VIRTUAL_ENV' in os.environ: + # virtual environments + return 'posix_prefix' + else: + # Debian default + return 'posix_local' return os.name @@ -485,7 +514,7 @@ else: inc_dir = _sys_home or _PROJECT_BASE else: - inc_dir = get_path('platinclude') + inc_dir = get_path('platinclude', 'posix_prefix') return os.path.join(inc_dir, 'pyconfig.h')