diff --git a/src/poetry/utils/env.py b/src/poetry/utils/env.py index b95a83aeb10..3edf1593f81 100644 --- a/src/poetry/utils/env.py +++ b/src/poetry/utils/env.py @@ -556,6 +556,26 @@ def _detect_active_python(self) -> str | None: ) return executable + def _get_python_version(self) -> list[int]: + version_info = list(sys.version_info[:3]) + + if self._poetry.config.get("virtualenvs.prefer-active-python"): + executable = self._detect_active_python() + + if executable: + python_patch = decode( + subprocess.check_output( + list_to_shell_command( + [executable, "-c", GET_PYTHON_VERSION_ONELINER] + ), + shell=True, + ).strip() + ) + + version_info = [int(v) for v in python_patch.split(".")[:3]] + + return version_info + def activate(self, python: str) -> Env: venv_path = self._poetry.config.virtualenvs_path cwd = self._poetry.file.parent @@ -667,7 +687,7 @@ def get(self, reload: bool = False) -> Env: if self._env is not None and not reload: return self._env - python_minor = ".".join([str(v) for v in sys.version_info[:2]]) + python_minor = ".".join([str(v) for v in self._get_python_version()[:2]]) venv_path = self._poetry.config.virtualenvs_path