How to fix ImportError: No module named packages.urllib3?
Solution 1
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
Solution 2
If you already have 'requests' installed from a default build, you may have to
sudo pip install --upgrade requests
Credit to @bkzland from comment on previous answer:
I followed these steps having the same error, I needed to use sudo pip install --upgrade each time to make it work. – bkzland Dec 17 '15 at 12:57
---now, how do I make this a dependency in my setup.py?
Solution 3
If you are having a RHEL based flavour, then:
yum install -y python-requests
Debian/Ubuntu based flavour:
apt-get install -y python-requests
Arch Linux based flavour:
pacman -S python-requests
Solution 4
python3
#note that requests.packages.urllib3 is just an alias for urllib3
from urllib3 import disable_warnings
from urllib3.exceptions import InsecureRequestWarning
disable_warnings(InsecureRequestWarning)
Solution 5
Problem solved by:
pip install --upgrade urllib3==1.19.1
pip install --upgrade requests
Related videos on Youtube
Comments
-
Joseph John about 3 years
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?
-
Steve Barnes over 9 yearsIf you are installing generally you may need to switch to root or prefix each of the above commands with
sudo
and type in your password after the first. -
Joseph John over 9 yearsYes, I've already installed these packages. First I installed python-pip, then using pip, I installed the other packages. There's no change in the error message. I even re-installed Python, but no luck.
-
bkzland over 8 yearsI followed these steps having the same error, I needed to use sudo pip install --upgrade each time to make it work.
-
Eli over 7 yearsin setup add
requires=['requests']
-
FlipMcF about 7 yearsWouldn't that find the old version of requests, dependencies are now met, and we get the failure the OP has observed?
-
FlipMcF over 5 yearsinstall_requires=['requests>=2.9']
-
Kolban about 5 yearsWhile this might answer the question, you should edit your answer to include some explanation for why this solves the issue in the question. This makes it more valuable to those who come across the same issue later on