Skip to content

Commit

Permalink
bpo-40448: ensurepip: Do not use cache (GH-19812)
Browse files Browse the repository at this point in the history
ensurepip optionally installs or upgrades 'pip' and 'setuptools' using
the version of those modules bundled with Python.  The internal PIP
installation routine by default temporarily uses its cache, if it
exists.  This is undesirable as Python builds and installations may be
independent of the user running the build, whilst PIP cache location
is dependent on the user's environment and outside of the build
environment.

At the same time, there's no value in using the cache while installing
bundled modules.

This change disables PIP caching when used in ensurepip.
  • Loading branch information
Krzysztof Konopko authored Jun 15, 2020
1 parent bf69a8f commit 4a3a682
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 9 deletions.
2 changes: 1 addition & 1 deletion Lib/ensurepip/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ def _bootstrap(*, root=None, upgrade=False, user=False,
additional_paths.append(os.path.join(tmpdir, wheel_name))

# Construct the arguments to be passed to the pip command
args = ["install", "--no-index", "--find-links", tmpdir]
args = ["install", "--no-cache-dir", "--no-index", "--find-links", tmpdir]
if root:
args += ["--root", root]
if upgrade:
Expand Down
16 changes: 8 additions & 8 deletions Lib/test/test_ensurepip.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ def test_basic_bootstrapping(self):

self.run_pip.assert_called_once_with(
[
"install", "--no-index", "--find-links",
"install", "--no-cache-dir", "--no-index", "--find-links",
unittest.mock.ANY, "setuptools", "pip",
],
unittest.mock.ANY,
Expand All @@ -54,7 +54,7 @@ def test_bootstrapping_with_root(self):

self.run_pip.assert_called_once_with(
[
"install", "--no-index", "--find-links",
"install", "--no-cache-dir", "--no-index", "--find-links",
unittest.mock.ANY, "--root", "/foo/bar/",
"setuptools", "pip",
],
Expand All @@ -66,7 +66,7 @@ def test_bootstrapping_with_user(self):

self.run_pip.assert_called_once_with(
[
"install", "--no-index", "--find-links",
"install", "--no-cache-dir", "--no-index", "--find-links",
unittest.mock.ANY, "--user", "setuptools", "pip",
],
unittest.mock.ANY,
Expand All @@ -77,7 +77,7 @@ def test_bootstrapping_with_upgrade(self):

self.run_pip.assert_called_once_with(
[
"install", "--no-index", "--find-links",
"install", "--no-cache-dir", "--no-index", "--find-links",
unittest.mock.ANY, "--upgrade", "setuptools", "pip",
],
unittest.mock.ANY,
Expand All @@ -88,7 +88,7 @@ def test_bootstrapping_with_verbosity_1(self):

self.run_pip.assert_called_once_with(
[
"install", "--no-index", "--find-links",
"install", "--no-cache-dir", "--no-index", "--find-links",
unittest.mock.ANY, "-v", "setuptools", "pip",
],
unittest.mock.ANY,
Expand All @@ -99,7 +99,7 @@ def test_bootstrapping_with_verbosity_2(self):

self.run_pip.assert_called_once_with(
[
"install", "--no-index", "--find-links",
"install", "--no-cache-dir", "--no-index", "--find-links",
unittest.mock.ANY, "-vv", "setuptools", "pip",
],
unittest.mock.ANY,
Expand All @@ -110,7 +110,7 @@ def test_bootstrapping_with_verbosity_3(self):

self.run_pip.assert_called_once_with(
[
"install", "--no-index", "--find-links",
"install", "--no-cache-dir", "--no-index", "--find-links",
unittest.mock.ANY, "-vvv", "setuptools", "pip",
],
unittest.mock.ANY,
Expand Down Expand Up @@ -260,7 +260,7 @@ def test_basic_bootstrapping(self):

self.run_pip.assert_called_once_with(
[
"install", "--no-index", "--find-links",
"install", "--no-cache-dir", "--no-index", "--find-links",
unittest.mock.ANY, "setuptools", "pip",
],
unittest.mock.ANY,
Expand Down
1 change: 1 addition & 0 deletions Misc/ACKS
Original file line number Diff line number Diff line change
Expand Up @@ -910,6 +910,7 @@ Vajrasky Kok
Guido Kollerie
Jacek Kołodziej
Jacek Konieczny
Krzysztof Konopko
Arkady Koplyarov
Peter A. Koren
Марк Коренберг
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
:mod:`ensurepip` now disables the use of `pip` cache when installing the
bundled versions of `pip` and `setuptools`. Patch by Krzysztof Konopko.

0 comments on commit 4a3a682

Please sign in to comment.