[Python-checkins] cpython (merge 3.6 -> default): Closes #24875: Merged fix from 3.6.

vinay.sajip python-checkins at python.org
Thu Feb 2 14:18:02 EST 2017


https://hg.python.org/cpython/rev/7fd931727764
changeset: 106391:7fd931727764
parent: 106388:23b36814d999
parent: 106390:7d4701b4210f
user: Vinay Sajip <vinay_sajip at yahoo.co.uk>
date: Thu Feb 02 19:17:51 2017 +0000
summary:
 Closes #24875: Merged fix from 3.6.
files:
 Lib/test/test_venv.py | 22 ++++++++++++++--------
 Lib/venv/__init__.py | 9 +++++++++
 2 files changed, 23 insertions(+), 8 deletions(-)
diff --git a/Lib/test/test_venv.py b/Lib/test/test_venv.py
--- a/Lib/test/test_venv.py
+++ b/Lib/test/test_venv.py
@@ -330,12 +330,7 @@
 else:
 self.assertTrue(os.path.exists(os.devnull))
 
-
- @unittest.skipUnless(threading, 'some dependencies of pip import threading'
- ' module unconditionally')
- # Issue #26610: pip/pep425tags.py requires ctypes
- @unittest.skipUnless(ctypes, 'pip requires ctypes')
- def test_with_pip(self):
+ def do_test_with_pip(self, system_site_packages):
 rmtree(self.env_dir)
 with EnvironmentVarGuard() as envvars:
 # pip's cross-version compatibility may trigger deprecation
@@ -369,6 +364,7 @@
 # config in place to ensure we ignore it
 try:
 self.run_with_capture(venv.create, self.env_dir,
+ system_site_packages=system_site_packages,
 with_pip=True)
 except subprocess.CalledProcessError as exc:
 # The output this produces can be a little hard to read,
@@ -418,9 +414,19 @@
 out = out.decode("latin-1") # Force to text, prevent decoding errors
 self.assertIn("Successfully uninstalled pip", out)
 self.assertIn("Successfully uninstalled setuptools", out)
- # Check pip is now gone from the virtual environment
- self.assert_pip_not_installed()
+ # Check pip is now gone from the virtual environment. This only
+ # applies in the system_site_packages=False case, because in the
+ # other case, pip may still be available in the system site-packages
+ if not system_site_packages:
+ self.assert_pip_not_installed()
 
+ @unittest.skipUnless(threading, 'some dependencies of pip import threading'
+ ' module unconditionally')
+ # Issue #26610: pip/pep425tags.py requires ctypes
+ @unittest.skipUnless(ctypes, 'pip requires ctypes')
+ def test_with_pip(self):
+ self.do_test_with_pip(False)
+ self.do_test_with_pip(True)
 
 if __name__ == "__main__":
 unittest.main()
diff --git a/Lib/venv/__init__.py b/Lib/venv/__init__.py
--- a/Lib/venv/__init__.py
+++ b/Lib/venv/__init__.py
@@ -57,6 +57,10 @@
 """
 env_dir = os.path.abspath(env_dir)
 context = self.ensure_directories(env_dir)
+ # See issue 24875. We need system_site_packages to be False
+ # until after pip is installed.
+ true_system_site_packages = self.system_site_packages
+ self.system_site_packages = False
 self.create_configuration(context)
 self.setup_python(context)
 if self.with_pip:
@@ -64,6 +68,11 @@
 if not self.upgrade:
 self.setup_scripts(context)
 self.post_setup(context)
+ if true_system_site_packages:
+ # We had set it to False before, now
+ # restore it and rewrite the configuration
+ self.system_site_packages = True
+ self.create_configuration(context)
 
 def clear_directory(self, path):
 for fn in os.listdir(path):
-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /