diff --git a/news/11623.bugfix.rst b/news/11623.bugfix.rst new file mode 100644 index 00000000000..45b8fe1928f --- /dev/null +++ b/news/11623.bugfix.rst @@ -0,0 +1 @@ +Fix scripts path in isolated build environment on Debian. diff --git a/src/pip/_internal/build_env.py b/src/pip/_internal/build_env.py index e67b868e8f4..24bfa870b07 100644 --- a/src/pip/_internal/build_env.py +++ b/src/pip/_internal/build_env.py @@ -8,7 +8,6 @@ import sys import textwrap from collections import OrderedDict -from sysconfig import get_paths from types import TracebackType from typing import TYPE_CHECKING, Iterable, List, Optional, Set, Tuple, Type @@ -19,6 +18,7 @@ from pip import __file__ as pip_location from pip._internal.cli.spinners import open_spinner from pip._internal.locations import ( + get_isolated_environment_bin_path, get_isolated_environment_lib_paths, get_platlib, get_purelib, @@ -37,10 +37,7 @@ class _Prefix: def __init__(self, path: str) -> None: self.path = path self.setup = False - self.bin_dir = get_paths( - "nt" if os.name == "nt" else "posix_prefix", - vars={"base": path, "platbase": path}, - )["scripts"] + self.bin_dir = get_isolated_environment_bin_path(path) self.lib_dirs = get_isolated_environment_lib_paths(path) diff --git a/src/pip/_internal/locations/__init__.py b/src/pip/_internal/locations/__init__.py index 516bd607839..496844be142 100644 --- a/src/pip/_internal/locations/__init__.py +++ b/src/pip/_internal/locations/__init__.py @@ -25,9 +25,10 @@ "USER_CACHE_DIR", "get_bin_prefix", "get_bin_user", + "get_isolated_environment_bin_path", + "get_isolated_environment_lib_paths", "get_major_minor_version", "get_platlib", - "get_isolated_environment_lib_paths", "get_purelib", "get_scheme", "get_src_prefix", @@ -526,3 +527,7 @@ def get_isolated_environment_lib_paths(prefix: str) -> List[str]: _log_context(prefix=prefix) return old_lib_paths + + +def get_isolated_environment_bin_path(prefix: str) -> str: + return _sysconfig.get_isolated_environment_paths(prefix)["scripts"] diff --git a/src/pip/_internal/locations/_sysconfig.py b/src/pip/_internal/locations/_sysconfig.py index 69821572081..38e400f94d4 100644 --- a/src/pip/_internal/locations/_sysconfig.py +++ b/src/pip/_internal/locations/_sysconfig.py @@ -213,10 +213,13 @@ def get_platlib() -> str: return sysconfig.get_paths()["platlib"] -def get_isolated_environment_lib_paths(prefix: str) -> typing.Tuple[str, str]: - vars = {"base": prefix, "platbase": prefix} +def get_isolated_environment_paths(prefix: str) -> typing.Dict[str, str]: + variables = {"base": prefix, "platbase": prefix} if "venv" in sysconfig.get_scheme_names(): - paths = sysconfig.get_paths(vars=vars, scheme="venv") - else: - paths = sysconfig.get_paths(vars=vars) + return sysconfig.get_paths(vars=variables, scheme="venv") + return sysconfig.get_paths(vars=variables) + + +def get_isolated_environment_lib_paths(prefix: str) -> typing.Tuple[str, str]: + paths = get_isolated_environment_paths(prefix) return (paths["purelib"], paths["platlib"])