diff --git a/README.md b/README.md index 58a87c0a..af6ee292 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # get-pip.py `get-pip.py` is a bootstrapping script that enables users to install pip, -setuptools, and wheel in Python environments that don't already have them. You +in Python environments that don't already have it installed. You should not directly reference the files located in this repository and instead use the versions located at . @@ -12,26 +12,34 @@ $ curl -sSL https://bootstrap.pypa.io/get-pip.py -o get-pip.py $ python get-pip.py ``` -Upon execution, `get-pip.py` will install `pip`, `setuptools` and `wheel` in -the current Python environment. +Upon execution, `get-pip.py` will install the latest version of `pip` into the +current Python environment. When using Python 3.11 or older, by default the +packages `setuptools` and `wheel` will also be installed if an existing version +of them was not found. It is possible to provide additional arguments to the underlying script. These are passed through to the underlying `pip install` command, and can thus be -used to constraint the versions of the packages, or to pass other pip options -such as `--no-index`. +used to constrain the versions of the packages, install additional packages, +or to pass other pip options such as `--no-index`. ```console -$ python get-pip.py "pip < 21.0" "setuptools < 50.0" "wheel < 1.0" +# Constrain the Pip version +$ python get-pip.py "pip < 21.0" + +# Force the installation of `setuptools` and `wheel` on newer Python versions. +$ python get-pip.py setuptools wheel + +# Install packages from a local directory instead of PyPI. $ python get-pip.py --no-index --find-links=/local/copies ``` ### get-pip.py options -This script also has it's own options, which control which packages it will +This script also has its own options, which control which packages it will install. -- `--no-setuptools`: do not attempt to install `setuptools`. -- `--no-wheel`: do not attempt to install `wheel`. +- `--no-setuptools`: Do not attempt to install `setuptools`. This is a no-op on Python 3.12+. +- `--no-wheel`: do not attempt to install `wheel`. This is a no-op on Python 3.12+. ## Development diff --git a/public/3.6/get-pip.py b/public/3.6/get-pip.py index fd48c7fd..dd50f01e 100644 --- a/public/3.6/get-pip.py +++ b/public/3.6/get-pip.py @@ -71,11 +71,14 @@ def determine_pip_install_arguments(): args.append("pip<22.0") - if include_setuptools(pre): - args.append("setuptools") + # We no longer install setuptools and wheel by default on Python 3.12+ + # for parity with the `ensurepip` and `venv` modules. + if this_python < (3, 12): + if include_setuptools(pre): + args.append("setuptools") - if include_wheel(pre): - args.append("wheel") + if include_wheel(pre): + args.append("wheel") return ["install", "--upgrade", "--force-reinstall"] + args @@ -111,7 +114,7 @@ def bootstrap(tmpdir): monkeypatch_for_cert(tmpdir) # Execute the included pip and use it to install the latest pip and - # setuptools from PyPI + # any user-requested packages from PyPI. from pip._internal.cli.main import main as pip_entry_point args = determine_pip_install_arguments() sys.exit(pip_entry_point(args)) diff --git a/public/3.7/get-pip.py b/public/3.7/get-pip.py index 8a564342..f8e61296 100644 --- a/public/3.7/get-pip.py +++ b/public/3.7/get-pip.py @@ -71,11 +71,14 @@ def determine_pip_install_arguments(): args.append("pip<24.1") - if include_setuptools(pre): - args.append("setuptools") + # We no longer install setuptools and wheel by default on Python 3.12+ + # for parity with the `ensurepip` and `venv` modules. + if this_python < (3, 12): + if include_setuptools(pre): + args.append("setuptools") - if include_wheel(pre): - args.append("wheel") + if include_wheel(pre): + args.append("wheel") return ["install", "--upgrade", "--force-reinstall"] + args @@ -111,7 +114,7 @@ def bootstrap(tmpdir): monkeypatch_for_cert(tmpdir) # Execute the included pip and use it to install the latest pip and - # setuptools from PyPI + # any user-requested packages from PyPI. from pip._internal.cli.main import main as pip_entry_point args = determine_pip_install_arguments() sys.exit(pip_entry_point(args)) diff --git a/public/get-pip.py b/public/get-pip.py index 07df24d0..143402f2 100644 --- a/public/get-pip.py +++ b/public/get-pip.py @@ -71,11 +71,14 @@ def determine_pip_install_arguments(): args.append("pip") - if include_setuptools(pre): - args.append("setuptools") + # We no longer install setuptools and wheel by default on Python 3.12+ + # for parity with the `ensurepip` and `venv` modules. + if this_python < (3, 12): + if include_setuptools(pre): + args.append("setuptools") - if include_wheel(pre): - args.append("wheel") + if include_wheel(pre): + args.append("wheel") return ["install", "--upgrade", "--force-reinstall"] + args @@ -111,7 +114,7 @@ def bootstrap(tmpdir): monkeypatch_for_cert(tmpdir) # Execute the included pip and use it to install the latest pip and - # setuptools from PyPI + # any user-requested packages from PyPI. from pip._internal.cli.main import main as pip_entry_point args = determine_pip_install_arguments() sys.exit(pip_entry_point(args)) diff --git a/templates/default.py b/templates/default.py index 5fafca70..0e19428b 100644 --- a/templates/default.py +++ b/templates/default.py @@ -71,11 +71,14 @@ def determine_pip_install_arguments(): args.append("pip{pip_version}") - if include_setuptools(pre): - args.append("setuptools{setuptools_version}") + # We no longer install setuptools and wheel by default on Python 3.12+ + # for parity with the `ensurepip` and `venv` modules. + if this_python < (3, 12): + if include_setuptools(pre): + args.append("setuptools{setuptools_version}") - if include_wheel(pre): - args.append("wheel{wheel_version}") + if include_wheel(pre): + args.append("wheel{wheel_version}") return ["install", "--upgrade", "--force-reinstall"] + args @@ -111,7 +114,7 @@ def bootstrap(tmpdir): monkeypatch_for_cert(tmpdir) # Execute the included pip and use it to install the latest pip and - # setuptools from PyPI + # any user-requested packages from PyPI. from pip._internal.cli.main import main as pip_entry_point args = determine_pip_install_arguments() sys.exit(pip_entry_point(args))