Python: fix virtualenv with Python 2

This commit is contained in:
Frederik Rietdijk
2020-05-24 09:35:45 +02:00
committed by Frederik Rietdijk
parent 98bcf5d8da
commit f17001afd8
5 changed files with 52 additions and 9 deletions

View File

@@ -0,0 +1,37 @@
From 21563405d6e2348ee457187f7fb61beb102bb367 Mon Sep 17 00:00:00 2001
From: Frederik Rietdijk <fridh@fridh.nl>
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

View File

@@ -43,6 +43,10 @@ buildPythonPackage rec {
importlib-metadata
];
patches = lib.optionals (isPy27) [
./0001-Check-base_prefix-and-base_exec_prefix-for-Python-2.patch
];
meta = {
description = "A tool to create isolated Python environments";
homepage = "http://www.virtualenv.org";