Not able to install Python packages [SSL: TLSV1_ALERT_PROTOCOL_VERSION]

I am trying to install a Python library using pip, getting an SSL error:

    ~/projects/base  pre-master±  pip install xdict

    Collecting xdict
      Could not fetch URL There was a problem confirming the ssl certificate: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590) - skipping
      Could not find a version that satisfies the requirement xdict (from versions: )
    No matching distribution found for xdict

pip version: pip 9.0.1

How do I fix this error?

Upgrade pip as follows:

    curl | python

Note: You may need to use sudo python above if not in a virtual environment.

(Note that upgrading pip using pip i.e pip install --upgrade pip will also not upgrade it correctly. It's just a chicken-and-egg issue. pip won't work unless using TLS >= 1.2.)

As mentioned in this detailed answer, this is due to the recent TLS deprecation for pip. sites have stopped support for TLS versions 1.0 and 1.1.

From the Python status page:

Completed - The rolling brownouts are finished, and TLSv1.0 and TLSv1.1 have been disabled. Apr 11, 15:37 UTC

For PyCharm (virtualenv) users:

  1. Run virtual environment with shell. (replace "./venv/bin/activate" to your own path)
     source ./venv/bin/activate
  1. Run upgrade
     curl | python
  1. Restart your PyCharm instance, and check your Python interpreter in Preference.


Back to homepage or read more recommendations: