116 votes

Python (pip) - RequestsDependencyWarning : urllib3 (1.9.1) ou chardet (2.3.0) ne correspond pas à une version supportée

J'ai trouvé plusieurs pages sur ce sujet mais aucune n'a résolu mon problème.

Même si je fais un :

pip show

Je reçois :

/usr/local/lib/python2.7/dist-packages/requests/__init__.py:80: RequestsDependencyWarning: urllib3 (1.9.1) or chardet (2.3.0) doesn't match a supported version!
  RequestsDependencyWarning)
Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in <module>
    load_entry_point('pip==1.5.6', 'console_scripts', 'pip')()
  File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 480, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2691, in load_entry_point
    return ep.load()
  File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2322, in load
    return self.resolve()
  File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2328, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  File "/usr/lib/python2.7/dist-packages/pip/__init__.py", line 74, in <module>
    from pip.vcs import git, mercurial, subversion, bazaar  # noqa
  File "/usr/lib/python2.7/dist-packages/pip/vcs/mercurial.py", line 9, in <module>
    from pip.download import path_to_url
  File "/usr/lib/python2.7/dist-packages/pip/download.py", line 22, in <module>
    import requests, six
  File "/usr/local/lib/python2.7/dist-packages/requests/__init__.py", line 90, in <module>
    from urllib3.exceptions import DependencyWarning
ImportError: cannot import name DependencyWarning

Ce que j'ai fait :

pip install --upgrade chardet

mais comme expliqué plus haut, cela me donne la même erreur.

alors je l'ai fait :

sudo apt remove python-chardet

et en désintallant toutes ses dépendances. Après l'avoir réinstallé -> même chose :'(

J'ai fait la même chose pour python-pip . Après la réinstallation, c'est -> la même chose.
Voici les lignes sur urllib3 et chardet versions nécessaires : extrait de /usr/local/lib/python2.7/dist-packages/requests/__init__.py :

    # Check urllib3 for compatibility.
    major, minor, patch = urllib3_version  # noqa: F811
    major, minor, patch = int(major), int(minor), int(patch)
    # urllib3 >= 1.21.1, <= 1.22
    assert major == 1
    assert minor >= 21
    assert minor <= 22

    # Check chardet for compatibility.
    major, minor, patch = chardet_version.split('.')[:3]
    major, minor, patch = int(major), int(minor), int(patch)
    # chardet >= 3.0.2, < 3.1.0
    assert major == 3
    assert minor < 1
    assert patch >= 2

# Check imported dependencies for compatibility.
try:
    check_compatibility(urllib3.__version__, chardet.__version__)
except (AssertionError, ValueError):
    warnings.warn("urllib3 ({0}) or chardet ({1}) doesn't match a supported "
                  "version!".format(urllib3.__version__, chardet.__version__),
                  RequestsDependencyWarning)

Mes versions sont :

ii  python-urllib3 1.9.1-3   all HTTP library with thread-safe connection pooling for Python 
ii  python-chardet  2.3.0-1  all universal character encoding detector for Python2

Je n'ai plus d'idées...

154voto

Droidzone Points 545

Cela est dû aux différents modules de demande installés par le système d'exploitation et aux dépendances python de votre installation locale.

Il peut être résolu en mettant à niveau les demandes :

pip install requests

ou

pip3 install requests

58 votes

Cela a également fonctionné sudo python3 -m pip install --upgrade requests

38voto

h3xStream Points 2710

La meilleure pratique serait de s'assurer que les demandes et ses dépendances sont à jour.

Python 2

$ pip install --upgrade demandes

Python 3

$ pip3 install --upgrade demandes

33voto

Alex C. Points 2639

Vous avez une configuration mixte (les deux apt et pip étaient utilisés pour installer à l'échelle du système, ce qui est courant), et il ne correspond effectivement pas aux versions supportées des modules requis par les requêtes (et pip v1.5.6 est également assez vieux).

Le site requests (quelle version ? probablement un reliquat de pip install ) exige :
urllib3 : 1.21.1 - 1.22
chardet : 3.0.2 - 3.1.0

Vous avez :
urllib3 (1.9.1) à partir du paquet debian python-urllib3 1.9.1-3
chardet (2.3.0) à partir du paquet debian python-chardet 2.3.0-1

Deux options :

  • soit déclasser requests à la version de votre distribution OS (voir ce qui est disponible avec apt show python-requests ), ou des versions plus anciennes à pypi.org, ou encore

  • ou installer les nouvelles versions d'urllib3 et de chardet (vous pouvez télécharger les fichiers wheel manuellement depuis pipy.org et faire pip install sur eux, y compris les éventuelles dépendances), soit au niveau de l'utilisateur ( --user option pip install) ou dans un virtualenv.

Vous pouvez tout tester dans un virtualenv ( apt show python-virtualenv ). Il devrait même déployer un pip plus récent pour vous à l'intérieur de ses environnements virtuels. Il est également possible pour installer un pip 10.0.1 plus récent au niveau de l'utilisateur ( --user ) en même temps que votre pipe à la mode OS, mais vous devez être attention à ce sujet. Bonne chance !

7 votes

Apparemment, la communauté des OS aime les solutions de copier-coller d'une ligne. J'aurais dû le faire. :)

32voto

Nafeez Quraishi Points 1165

Une erreur similaire s'est produite lors de la mise à niveau vers urllib3 1.23 . Installation d'une ancienne version 1.22 a résolu cette erreur pour moi.

J'ai fait ce qui suit pour installer l'ancien urllib3 version :

  1. pip uninstall urllib3
  2. pip install urllib3==1.22

0 votes

Cela a réglé le problème que j'avais avec Localstack.

6voto

Saurabh Points 51

Cela a fonctionné pour moi. Il suffit d'exécuter les commandes ci-dessous.

$ sudo pip uninstall requests

$ sudo pip install requests

$ sudo pip uninstall docopt

$ sudo pip install docopt

Voici la référence lien pour plus de détails !

0 votes

Merci beaucoup ! Cela m'a épargné beaucoup de maux de tête !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X