From d76cdc161e2e9523c51af63e8f7cfd310ef1a74b Mon Sep 17 00:00:00 2001 From: Nick Coghlan Date: Sat, 23 Nov 2013 11:37:28 +1000 Subject: [PATCH] Close #19694: venv now runs ensurepip in isolated mode --- Lib/test/test_venv.py | 9 +++++++-- Lib/venv/__init__.py | 7 +++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/Lib/test/test_venv.py b/Lib/test/test_venv.py index 6047f874c31..87d727e8cb8 100644 --- a/Lib/test/test_venv.py +++ b/Lib/test/test_venv.py @@ -12,7 +12,7 @@ import subprocess import sys import tempfile from test.support import (captured_stdout, captured_stderr, run_unittest, - can_symlink) + can_symlink, EnvironmentVarGuard) import unittest import venv @@ -280,7 +280,12 @@ class EnsurePipTest(BaseTest): def test_with_pip(self): shutil.rmtree(self.env_dir) - self.run_with_capture(venv.create, self.env_dir, with_pip=True) + with EnvironmentVarGuard() as envvars: + # pip's cross-version compatibility may trigger deprecation + # warnings in current versions of Python. Ensure related + # environment settings don't cause venv to fail. + envvars["PYTHONWARNINGS"] = "e" + self.run_with_capture(venv.create, self.env_dir, with_pip=True) envpy = os.path.join(os.path.realpath(self.env_dir), self.bindir, self.exe) cmd = [envpy, '-m', 'pip', '--version'] p = subprocess.Popen(cmd, stdout=subprocess.PIPE, diff --git a/Lib/venv/__init__.py b/Lib/venv/__init__.py index 2991c6692f5..14158e97d59 100644 --- a/Lib/venv/__init__.py +++ b/Lib/venv/__init__.py @@ -234,8 +234,11 @@ class EnvBuilder: def _setup_pip(self, context): """Installs or upgrades pip in a virtual environment""" - cmd = [context.env_exe, '-m', 'ensurepip', '--upgrade', - '--default-pip'] + # We run ensurepip in isolated mode to avoid side effects from + # environment vars, the current directory and anything else + # intended for the global Python environment + cmd = [context.env_exe, '-Im', 'ensurepip', '--upgrade', + '--default-pip'] subprocess.check_output(cmd) def setup_scripts(self, context):