¿Cómo arreglar ImportError: no hay un módulo llamado packages.urllib3?

Estoy ejecutando Python 2.7.6 en una máquina Ubuntu. Cuando ejecuto twill-sh (Twill es un navegador que se usa para probar sitios web) en mi Terminal, obtengo lo siguiente:

 Traceback (most recent call last): File "dep.py", line 2, in  import twill.commands File "/usr/local/lib/python2.7/dist-packages/twill/__init__.py", line 52, in  from shell import TwillCommandLoop File "/usr/local/lib/python2.7/dist-packages/twill/shell.py", line 9, in  from twill import commands, parse, __version__ File "/usr/local/lib/python2.7/dist-packages/twill/commands.py", line 75, in  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 

Sin embargo, puedo importar urllib en la consola de Python muy bien. ¿Cuál podría ser la razón?

Hay una diferencia entre el estándar urllib y urllib2 y el tercero urllib3 .

Parece que twill no instala las dependencias, así que tienes que hacerlo tú mismo. Twill depende de la biblioteca de requests que viene con y utiliza urllib3 detrás de escena. También necesitas las bibliotecas lxml y cssselect .

Puedes instalarlos en la terminal de la siguiente manera:

pip install requests

pip install lxml

y

pip install cssselect

Si ya tiene ‘solicitudes’ instaladas desde una comstackción predeterminada, es posible que tenga que

sudo pip install --upgrade requests

Gracias a @bkzland por el comentario de la respuesta anterior:

Seguí estos pasos con el mismo error, necesitaba usar sudo pip install – upgrade cada vez que funcionara. – bkzland 17 de diciembre de 15 a las 12:57

— ahora, ¿cómo hago de esto una dependencia en mi setup.py?

Si tienes un sabor a base de RHEL, entonces:

yum install -y python-requests

Sabor basado en Debian / Ubuntu:

apt-get install -y python-requests

Sabor basado en Arch Linux:

pacman -S python-requests

Problema decidido por:

 pip install --upgrade urllib3==1.19.1 pip install --upgrade requests 

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)