Enfin, presque :)
J’étais en train d’installer en vieux requirements.txt quand soudain :
File " /usr/lib/python2.7/dist-packages/pip/download.py", line 23, in <module> from requests.adapters import BaseAdapter ImportError: No module named adapters |
Wut ?
Mon erreur était due à une version de requests trop ancienne. J’upgrade et ça remarche. Mais ça m’a intrigué :
⟩ grin "requests" /usr/lib/python2.7/dist-packages/pip/ /usr/lib/python2.7/dist-packages/pip/download.py: 22 : import requests, six 23 : from requests.adapters import BaseAdapter 24 : from requests.auth import AuthBase, HTTPBasicAuth 25 : from requests.compat import IncompleteRead 26 : from requests.exceptions import InvalidURL, ChunkedEncodingError 27 : from requests.models import Response 28 : from requests.structures import CaseInsensitiveDict 120 : # Store the new username and password to use for future requests 182 : # We only work for requests with a host of localhost 211 : class PipSession(requests.Session): 548 : except requests.HTTPError as exc: /usr/lib/python2.7/dist-packages/pip/index.py: 17 : import html5lib, requests, pkg_resources 18 : from requests.exceptions import SSLError 80 : # The Session we'll use to make requests 689 : except requests.HTTPError as exc: 692 : except requests.ConnectionError as exc: 697 : except requests.Timeout: |
Je regarde le code source github, qui diffère de celui de mon système :
from pip._vendor.requests.adapters import BaseAdapter, HTTPAdapter from pip._vendor.requests.auth import AuthBase, HTTPBasicAuth from pip._vendor.requests.compat import IncompleteRead from pip._vendor.requests.exceptions import ChunkedEncodingError |
Mais ça reste bien requests.
Donc, si vous avez la 3.4, vous avez pip installé, qui maintenant embed requests. Donc Python 3.4 vient forcément avec requests \o/
Si vous supportez uniquement cette plateforme, vous pouvez faire :
try: import requests except ImportError: import pip._vendor.requests as requests |
Et bénéficier de requests sans rien installer.
Tout ça pour ça.
A condition que python3.4 soit compile avec Pip ce qui n est pas le cas partout.
Oui enfin, em important _vendor, donc qui est privé à pip (commence par un underscore), on s’expose au risque que l’import ne marche plus dans 1/2 version(s) si le code est modifié … Pour utiliser une nouvelle lib standard trop bien (après pip dans la stdlib, on peut rêver de tout ^_^)
@Khertan, @Morgotth : absolument, l’article est plus un clin d’oeil qu’un appel sérieux à utiliser ce requests.