diff options
author | Nick Coghlan <ncoghlan@gmail.com> | 2013-11-23 01:37:28 (GMT) |
---|---|---|
committer | Nick Coghlan <ncoghlan@gmail.com> | 2013-11-23 01:37:28 (GMT) |
commit | d76cdc161e2e9523c51af63e8f7cfd310ef1a74b (patch) | |
tree | 2e4e02d993a2fe27ce44e26b0869d6bb782262db /Lib | |
parent | fd66cc5534ffb8fbdd071b2c453744562a16e818 (diff) | |
download | cpython-d76cdc161e2e9523c51af63e8f7cfd310ef1a74b.zip cpython-d76cdc161e2e9523c51af63e8f7cfd310ef1a74b.tar.gz cpython-d76cdc161e2e9523c51af63e8f7cfd310ef1a74b.tar.bz2 |
Close #19694: venv now runs ensurepip in isolated mode
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/test/test_venv.py | 9 | ||||
-rw-r--r-- | 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 6047f87..87d727e 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 2991c66..14158e9 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): |