From ae2ee96ad797435963e9aa13d54d52db765486c9 Mon Sep 17 00:00:00 2001 From: Nick Coghlan Date: Mon, 23 Dec 2013 23:07:07 +1000 Subject: Issue #19744: improve ensurepip error when ssl is missing --- Lib/ensurepip/__init__.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'Lib/ensurepip') diff --git a/Lib/ensurepip/__init__.py b/Lib/ensurepip/__init__.py index 0f43bc424f..74cd207c99 100644 --- a/Lib/ensurepip/__init__.py +++ b/Lib/ensurepip/__init__.py @@ -14,6 +14,19 @@ _SETUPTOOLS_VERSION = "2.0.1" _PIP_VERSION = "1.5rc2" +# pip currently requires ssl support, so we try to provide a nicer +# error message when that is missing (http://bugs.python.org/issue19744) +_MISSING_SSL_MESSAGE = ("pip {} requires SSL/TLS".format(_PIP_VERSION)) +try: + import ssl +except ImportError: + ssl = None + def _require_ssl_for_pip(): + raise RuntimeError(_MISSING_SSL_MESSAGE) +else: + def _require_ssl_for_pip(): + pass + _PROJECTS = [ ("setuptools", _SETUPTOOLS_VERSION), ("pip", _PIP_VERSION), @@ -57,6 +70,7 @@ def bootstrap(*, root=None, upgrade=False, user=False, if altinstall and default_pip: raise ValueError("Cannot use altinstall and default_pip together") + _require_ssl_for_pip() _clear_pip_environment_variables() # By default, installing pip and setuptools installs all of the @@ -121,6 +135,7 @@ def _uninstall_helper(*, verbosity=0): "({!r} installed, {!r} bundled)") raise RuntimeError(msg.format(pip.__version__, _PIP_VERSION)) + _require_ssl_for_pip() _clear_pip_environment_variables() # Construct the arguments to be passed to the pip command -- cgit v1.2.1