Если вы используете модуль requests
, то это единственное, что вам нужно импортировать. Остальное позаботится о вас Python. То, что urllib3
используется requests
, является подробностью реализации , если только вам не нужен доступ к определенным объектам, определенным библиотекой urllib3
, вам не нужно импортировать их в базу кода.
requests
- это , а не модуль внутри urllib3
. Модуль urllib3
определяет модуль urllib3.request
(в единственном числе!), Который полностью отличается от пакета requests
:
>>> import urllib3
>>> import requests
>>> urllib3.request
<module 'urllib3.request' from '/Users/mj/Development/venvs/stackoverflow-latest/lib/python3.7/site-packages/urllib3/request.py'>
>>> requests
<module 'requests' from '/Users/mj/Development/venvs/stackoverflow-latest/lib/python3.7/site-packages/requests/__init__.py'>
>>> requests is urllib3.request
False
Обратите внимание, что urllib3.request
- это модуль внутри urllib3
пакета пространства имен . import request
(нет s
) не будет импортировать его, так как это запрашивает имя верхнего уровня. Также не будет import somethingelse.request
, поскольку это будет пространство имен, отличное от urllib3
. И то, что имена requests
и request
похожи, не означает, что они одно и то же. Стандарт HTTP имеет дело с абстрактной концепцией запроса , отправляемого на сервер, а сервер возвращает ответ , поэтому имена в различных проектах, связанных с HTTP, часто будут отражать концепции, которые они представлять в коде.
То же самое относится к именам urllib
и urllib2
. Когда-то давно Python начинал с ограниченного пакета urllib
, а позже к нему добавили пакет urllib2
, который расширил первый и добавил дополнительные функциональные возможности. Python 3 объединил два пакета и реорганизовал функциональность в серию новых модулей в пространстве имен urllib
. Пакет urllib3
является независимым проектом для создания лучшей библиотеки с той же функциональностью. Никакие части этого проекта не включены в стандартную библиотеку Python.
requests
- это проект, который предоставляет вам простой, понятный и простой в использовании API для выполнения HTTP-запросов и обработки полученных ответов. Используйте его для этого API, не беспокойтесь о деталях реализации.