Fixes #24875: Merged fix from 3.5.
This commit is contained in:
commit
993f535ae9
|
@ -330,12 +330,7 @@ class EnsurePipTest(BaseTest):
|
|||
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 @@ class EnsurePipTest(BaseTest):
|
|||
# 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 @@ class EnsurePipTest(BaseTest):
|
|||
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()
|
||||
|
|
|
@ -57,6 +57,10 @@ class EnvBuilder:
|
|||
"""
|
||||
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 @@ class EnvBuilder:
|
|||
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):
|
||||
|
|
Loading…
Reference in New Issue