J'ai trouvé plusieurs pages sur ce problème mais aucune d'elles 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é, cela me donne la même erreur.
alors j'ai fait:
Sudo apt remove python-chardet
et désinstaller toutes ses dépendances . Après je le réinstaller -> le même: '(
J'ai fait la même chose pour python-pip. Après l'avoir réinstallé -> le même.
Voici les lignes sur les versions de urllib3 et chardet 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 ...
Merci à tous et désolé pour mon anglais :)
Vous avez une configuration mixte (apt
et pip
ont été utilisés pour installer l’ensemble du système, ce qui est commun), et cela ne correspond en effet pas aux versions prises en charge des modules requis par les demandes (et le pip v1.5.6 est également très ancien) .
La requests
(quelle version? Restants probables de pip install
) nécessite:
urllib3: 1.21.1 - 1.22
chardet: 3.0.2 - 3.1.0
Tu as:
urllib3 (1.9.1) à partir du paquet debian python-urllib3 1.9.1-3
chardet (2.3.0) à partir du paquet Debian 2.3.0-1 de python-chardet
Deux options:
soit rétrograder requests
à la version de votre distribution de système d'exploitation (voir ce qui est disponible avec apt show python-requests
), ou à des versions plus anciennes sur pypi.org, ou
ou installez urllib3 et chardet plus récents (vous pouvez télécharger les fichiers wheel manuellement à partir de pipy.org et faire pip install
sur eux, y compris leurs dépendances), soit au niveau utilisateur (option --user
pip install), soit dans un virtualenv.
Vous pouvez tout tester dans un virtualenv (apt show python-virtualenv
). Il devrait même déployer un nouveau pip pour vous dans ses envs virtuels. Il est également possible d'installer un nouveau pip 10.0.1 au niveau utilisateur (--user
) à côté de votre pip vendu par le système d'exploitation, mais vous devez être prudent . Bonne chance!
Cela est dû au module de requêtes différent installé 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
Face à une erreur similaire lors de la mise à niveau vers urllib3 1.23
. L'installation de l'ancienne version 1.22
a résolu cette erreur pour moi.
Avez-vous fait pour installer l'ancienne version urllib3
:
pip uninstall urllib3
pip install urllib3==1.22
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 !
J'avais une version plus ancienne de requests
.
Changer la version requests
de 2.19.1
en 2.20.1
l’a résolu.
À tout moment, vérifiez que le code source est le bon moyen, en particulier lorsque le développeur a laissé des instructions claires dans les commentaires, comme dans ce cas. (Peut-être que l'auteur devrait être plus précis et le mettre dans le message d'erreur, oui)
Ouvrez vi /usr/lib/python2.7/site-packages/requests/__init__.py
et recherchez check_compatibility(
.
def check_compatibility(urllib3_version, chardet_version):
urllib3_version = urllib3_version.split('.')
assert urllib3_version != ['dev'] # Verify urllib3 isn't installed from git.
# Sometimes, urllib3 only reports its version as 16.1.
if len(urllib3_version) == 2:
urllib3_version.append('0')
# 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.24 <------------------ here
assert major == 1
assert minor >= 21
assert minor <= 24
# 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 <------------------ and here
assert major == 3
assert minor < 1
assert patch >= 2
Ensuite, vous connaissez la gamme de versions de urllib3
et chardet
compatibles. Donc, vous essayez avec:
pip uninstall urllib3
pip install urllib3==1.24
pip uninstall chardet
pip install chardet==3.0.9 # this will fail, prompting the correct versions available, so you will try to install 3.0.4 instead