Почему этот код Python работает дважды?

У меня есть Python script только с этими двумя строками:

import requests
print len(dir(requests))

Он печатает:

12
48

Когда я печатаю фактический список dir(requests), я получаю следующее:

['__author__', '__build__', '__builtins__', '__copyright__', '__doc__', '__file__', '__license__', '__name__', '__package__', '__path__', '__title__', '__version__']
['ConnectionError', 'HTTPError', 'NullHandler', 'PreparedRequest', 'Request', 'RequestException', 'Response', 'Session', 'Timeout', 'TooManyRedirects', 'URLRequired', '__author__', '__build__', '__builtins__', '__copyright__', '__doc__', '__file__', '__license__', '__name__', '__package__', '__path__', '__title__', '__version__', 'adapters', 'api', 'auth', 'certs', 'codes', 'compat', 'cookies', 'delete', 'exceptions', 'get', 'head', 'hooks', 'logging', 'models', 'options', 'packages', 'patch', 'post', 'put', 'request', 'session', 'sessions', 'status_codes', 'structures', 'utils']

Я предполагаю, что есть несколько модулей requests или что-то в этом роде. Пожалуйста, помогите.

Ответ 1

Вы указали свой script имя стандартного модуля или что-то еще, которое импортируется пакетом requests. Вы создали круговой импорт.

yourscript -> import requests -> [0 or more other modules] -> import yourscript -> import requests again

Поскольку requests не завершил импорт при первом просмотре этих различий в списке поддерживаемых объектов.

Не делай этого. Переименуйте script в другое, и все будет работать.

Ответ 2

Первый - это ваш собственный модуль Второй модуль для работы с HTTP-запросами. Переименуйте собственный модуль