From 21563405d6e2348ee457187f7fb61beb102bb367 Mon Sep 17 00:00:00 2001 From: Frederik Rietdijk Date: Sun, 24 May 2020 09:33:13 +0200 Subject: [PATCH] Check base_prefix and base_exec_prefix for Python 2 This is a Nixpkgs-specific change so it can support virtualenvs from Nix envs. --- src/virtualenv/discovery/py_info.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/virtualenv/discovery/py_info.py b/src/virtualenv/discovery/py_info.py index 6f12128..74e9218 100644 --- a/src/virtualenv/discovery/py_info.py +++ b/src/virtualenv/discovery/py_info.py @@ -51,13 +51,17 @@ class PythonInfo(object): self.version = u(sys.version) self.os = u(os.name) + config_vars = {} if sys.version_info.major is not 2 else sysconfig._CONFIG_VARS + base_prefix = config_vars.get("prefix") + base_exec_prefix = config_vars.get("exec_prefix") + # information about the prefix - determines python home self.prefix = u(abs_path(getattr(sys, "prefix", None))) # prefix we think - self.base_prefix = u(abs_path(getattr(sys, "base_prefix", None))) # venv + self.base_prefix = u(abs_path(getattr(sys, "base_prefix", base_prefix))) # venv self.real_prefix = u(abs_path(getattr(sys, "real_prefix", None))) # old virtualenv # information about the exec prefix - dynamic stdlib modules - self.base_exec_prefix = u(abs_path(getattr(sys, "base_exec_prefix", None))) + self.base_exec_prefix = u(abs_path(getattr(sys, "base_exec_prefix", base_exec_prefix))) self.exec_prefix = u(abs_path(getattr(sys, "exec_prefix", None))) self.executable = u(abs_path(sys.executable)) # the executable we were invoked via -- 2.25.1