Issue #19744: improve ensurepip error when ssl is missing
diff --git a/Lib/ensurepip/__init__.py b/Lib/ensurepip/__init__.py
index 0f43bc4..74cd207 100644
--- a/Lib/ensurepip/__init__.py
+++ b/Lib/ensurepip/__init__.py
@@ -14,6 +14,19 @@
_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 @@
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 @@
"({!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