Requests fait partie de la lib standard ! 3


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.

3 thoughts on “Requests fait partie de la lib standard !

  • Morgotth

    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 ^_^)

  • Sam Post author

    @Khertan, @Morgotth : absolument, l’article est plus un clin d’oeil qu’un appel sérieux à utiliser ce requests.

Leave a comment

Des questions Python sans rapport avec l'article ? Posez-les sur IndexError.