ImportError: cannot import name HTTPSHandler using PIP

Posted on

Question :

ImportError: cannot import name HTTPSHandler using PIP

Facing an HTTPSHandler error while installing python packages using pip, following is the stack trace,

--------desktop:~$ pip install Django==1.3
Traceback (most recent call last):
  File "/home/env/.genv/bin/pip", line 9, in <module>
    load_entry_point('pip==1.4.1', 'console_scripts', 'pip')()
  File "/home/env/.genv/lib/python2.7/site-packages/", line 378, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/home/env/.genv/lib/python2.7/site-packages/", line 2566, in load_entry_point
    return ep.load()
  File "/home/env/.genv/lib/python2.7/site-packages/", line 2260, in load
    entry = __import__(self.module_name, globals(),globals(), ['__name__'])
  File "/home/env/.genv/lib/python2.7/site-packages/pip/", line 10, in <module>
    from pip.util import get_installed_distributions, get_prog
  File "/home/env/.genv/lib/python2.7/site-packages/pip/", line 17, in <module>
    from pip.vendor.distlib import version
  File "/home/env/.genv/lib/python2.7/site-packages/pip/vendor/distlib/", line 13, in <module>
    from .compat import string_types
  File "/home/env/.genv/lib/python2.7/site-packages/pip/vendor/distlib/", line 31, in <module>
    from urllib2 import (Request, urlopen, URLError, HTTPError,
ImportError: cannot import name HTTPSHandler

I used to edit Modules/setup.dist file and uncomment SSL code lines and rebuilt it, with reference to following thread :

Answer #1:

OSX + homebrew users:

You can get the latest updates to the recipe:

brew reinstall python

But if you still get the issue, e.g. maybe you have upgraded your OS, then you may need to get the latest openssl first. You can check which version and where it is used from:

openssl version -a
which openssl

To get the latest openssl:

brew update
brew install openssl
brew link --overwrite --dry-run openssl  # safety first.
brew link openssl --overwrite

This may issue a warning:

bash-4.3$ brew link --overwrite --dry-run openssl
Warning: Refusing to link: openssl Linking keg-only openssl means you may end up linking against the insecure, deprecated system OpenSSL while using the headers from Homebrew's openssl. 
Instead, pass the full include/library paths to your compiler e.g.: 
-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib

Side note: this warning means that for other apps, you may want to use

export LDFLAGS=-L/usr/local/opt/openssl/lib
export CPPFLAGS=-I/usr/local/opt/openssl/include

Then recompile python:

brew uninstall python
brew install python --with-brewed-openssl

or for python 3

brew uninstall python3
brew install python3 --with-brewed-openssl
Answered By: dnozay

Answer #2:

You need to install the OpenSSL header files before building Python if you need SSL support. On Debian and Ubuntu, they are in a package called libssl-dev. You might need some more dependencies, as noted here.

Answered By: sk1p

Answer #3:


This was probably caused by an upgrade to Mavericks. Here’s how I fixed it.

Update OpenSSL

#make a copy of the existing library, just in case
sudo cp /usr/bin/openssl /usr/bin/

# update openssl 
brew update
brew install openssl
brew link --force openssl

# reload terminal paths
hash -r

Reinstall Python

Python 3

brew uninstall python3

brew install python3 --with-brewed-openssl

Python 2

brew uninstall python

brew install python --with-brewed-openssl

This answer consolidates all the Stack Exchange answers and comments I found, and is based mostly on this Apple Stack Exchange answer.

Answered By: Waylon Flinn

Answer #4:

I was having this problem on Mac OSX, even after confirming my PATH, etc.

Did a; pip uninstall virtualenv then install virtualenv and it seemed to works now.

At the time I had forced brew to link openssl, unlinked it and virtualenv still seems to work but maybe that’s because it was originally linked when I reinstalled it.

Answered By: jay

Answer #5:

You need to install OpenSSl before make and install Python to solve the problem.

On Centos:

yum install openssl openssl-devel -y


Answered By: leon

Answer #6:

Another symptom of this problem for me was if I went into the python console of my virtualenv and did import ssl it would error out. Turns out my virtualenv wasn’t using the brew version of python, just the default install on my machine. No clue why the default install suddenly stopped working, but here’s how I fixed it the problem:

  • rmvirtualenv myvirtualenv
  • brew update
  • brew reinstall python
  • mkvirtualenv -p /usr/local/Cellar/python/whatever_version_number/bin/python myvirtualenv
Answered By: David Wright

Answer #7:

It seems your pip requires HTTPSHandler which is part of SSL library.


On OS X you should link OpenSSL during Python installation (See: #14497).

For Python 2:

brew reinstall python --with-brewed-openssl
pip install --upgrade pip

For Python 3:

brew reinstall python3 --with-brewed-openssl
pip3 install --upgrade pip

You could have multiple Python instances together, to list them run:

brew list | grep ^python

Or list your version via ls -al /usr/local/lib/python*.

Answered By: kenorb

Answer #8:

I’m using Redhat and have met the same problem.

My solution is :

  1. install openssl and openssl-devel —- yum install openssl openssl-devel -y
  2. install krb5-devel —- yum install krb5-devel
  3. change to your python’s directory and recompile it —- make

If I didn’t do the 2nd step, when I recompiled my python2.7 , the log would say ” fail to build module _ssl”.

Answered By: April

Leave a Reply

Your email address will not be published. Required fields are marked *