How to fix ImportError: No module named packages.urllib3?
Question: I'm running Python 2.7.6 on an Ubuntu machine. When I run `twill-sh` (Twill is
a browser used for testing websites) in my Terminal, I'm getting the
following:

    
    
    Traceback (most recent call last):
      File "dep.py", line 2, in <module>
        import twill.commands
      File "/usr/local/lib/python2.7/dist-packages/twill/__init__.py", line 52, in <module>
        from shell import TwillCommandLoop
      File "/usr/local/lib/python2.7/dist-packages/twill/shell.py", line 9, in <module>
        from twill import commands, parse, __version__
      File "/usr/local/lib/python2.7/dist-packages/twill/commands.py", line 75, in <module>
        browser = TwillBrowser()
      File "/usr/local/lib/python2.7/dist-packages/twill/browser.py", line 31, in __init__
        from requests.packages.urllib3 import connectionpool as cpl
    ImportError: No module named packages.urllib3
    

However, I can import urllib in Python console just fine. What could be the
reason?


Answer: There is a difference between the standard `urllib` and `urllib2` and the
third-party `urllib3`.

It looks like twill does not install the dependencies so you have to do it
yourself. Twill depends on `requests` library which comes with and uses
`urllib3` behind the scenes. You also need `lxml` and `cssselect` libraries.

You can install them on terminal as follows:

`pip install requests`

`pip install lxml`

and

`pip install cssselect`

