web-dev-qa-db-fra.com

Comment réparer ImportError: Aucun module nommé packages.urllib3?

J'exécute Python 2.7.6 sur une machine Ubuntu. Lorsque j'exécute twill-sh (Twill est un navigateur utilisé pour tester des sites Web) dans mon terminal, les éléments suivants sont disponibles:

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

Cependant, je peux très bien importer urllib dans la console Python. Quelle pourrait être la raison?

12
Joseph John

Il existe une différence entre les variables urllib et urllib2 standard et le urllib3 tiers. 

Il semble que twill n'installe pas les dépendances, vous devez donc le faire vous-même. Twill dépend de la bibliothèque requests qui est fournie avec et utilise urllib3 dans les coulisses. Vous avez également besoin des bibliothèques lxml et cssselect.

Vous pouvez les installer sur le terminal comme suit:

pip install requests

pip install lxml

et

pip install cssselect

15
dopstar

Si vous avez déjà des 'demandes' installées à partir d'une version par défaut, vous devrez peut-être 

Sudo pip install --upgrade requests

Merci à @bkzland d'avoir commenté la réponse précédente:

J'ai suivi ces étapes en ayant la même erreur, je devais utiliser Sudo pip installez --upgrade à chaque fois pour le faire fonctionner. - bkzland 17 déc. 15 à 12:57

--- maintenant, comment en faire une dépendance dans mon fichier setup.py?

21
FlipMcF

Si vous rencontrez une saveur à base de RHEL, alors:

yum install -y python-requests

Saveur basée sur Debian/Ubuntu:

apt-get install -y python-requests

Saveur basée sur Arch Linux:

pacman -S python-requests

5
Vishnu Kumar

Problème décidé par:

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