'Объект модуля не имеет атрибута' get 'Python error Requests?
Я только что установил модуль Requests с помощью easy_install
и попытался запустить демонстрационный код этого урока,
import requests
payload = {'username': 'xxxx', 'password': 'xxxxx'}
r = requests.get('https://github.com/timeline.json')
но я получаю эту ошибку:
AttributeError: у 'module' object has no attribute 'get'
Ответы
Ответ 1
Вы импортируете все имена из модуля requests
в свое локальное пространство имен, что означает, что вам больше не нужно их префикс с именем модуля:
>>> from requests import *
>>> get
<function get at 0x107820b18>
Если вы должны были импортировать модуль с инструкцией import requests
вместо этого, вы добавили сам модуль в свое пространство имен, и вам нужно будет использовать полное имя:
>>> import requests
>>> requests.get
<function get at 0x102e46b18>
Обратите внимание, что приведенные выше примеры - это то, что я получил от своих тестов в интерпретаторе. Если вы получаете разные результаты, вы импортируете неправильный модуль; проверьте, есть ли у вас дополнительный файл requests.py
в вашем пакете python:
>>> import requests
>>> print requests.__file__
/private/tmp/requeststest/lib/python2.7/site-packages/requests/__init__.pyc
Вы также можете проверить список имен, предоставляемый модулем requests
:
>>> print dir(requests)
['ConnectionError', 'HTTPError', 'Request', 'RequestException', 'Response', 'Session', 'Timeout', 'TooManyRedirects', 'URLRequired', '__author__', '__build__', '__builtins__', '__copyright__', '__doc__', '__file__', '__license__', '__name__', '__package__', '__path__', '__title__', '__version__', '_oauth', 'api', 'auth', 'certs', 'codes', 'compat', 'cookies', 'defaults', 'delete', 'exceptions', 'get', 'head', 'hooks', 'models', 'options', 'packages', 'patch', 'post', 'put', 'request', 'safe_mode', 'session', 'sessions', 'status_codes', 'structures', 'utils']
Ответ 2
Это типичный симптом несвязанного файла requests.py
(или requests.pyc
), который находится в вашем текущем каталоге или где-то еще на PYTHONPATH
. Если это так, удалите или переименуйте его, поскольку он затеняет модуль, который вы действительно хотите импортировать.
Ответ 3
У меня была такая же ошибка.
Все, что я сделал, это сохранить его как requests.py
Затем я сохранил его как другое имя.
И проблема решена.
Ответ 4
Как уже говорилось, наиболее распространенная проблема заключается в том, что у вас есть файл requests.py
где-то в вашем PYTHONPATH
.
Но поскольку модуль запросов внутренне использует другие модули (например, из стандартной библиотеки python), могут возникнуть проблемы с другими именами файлов. Например, у меня была такая же проблема, когда я назвал script http.py
. В этом случае вывод print dir(requests)
правильный, что затрудняет отслеживание ошибки.
Ответ 5
У вас есть варианты того, как это исправить.
import requests
или
r = get('https://github.com/timeline.json')
P.S. Первый предпочтительный
Ответ 6
Я ошибся, что имя тестового файла было request.py.
Итак, когда я импортирую request.py, это не то, что я хочу импортировать.
Затем я переименовал имя тестового файла. Он работает!!!
Ответ 7
Это может быть ошибка пользователя, если вы работаете с инфраструктурой, такой как Django, которая также имеет объекты запроса.
Я постоянно путаю Django's:
request.POST
и request
's:
request.POST
Это была моя проблема, так или иначе. Закрепление голосов.
Ответ 8
У меня случилась такая же проблема на Mac и Ubuntu. Я хочу проверить команду запросов. Я использовал / имя папки запросов и requests.py файл на Mac. Но Python показывает сообщение "ImportError: невозможно импортировать имя". Поэтому я переименовал запросы/папку и файл reports.py в test-запросы/и test-requests.py. Он все еще получил сообщение. Я проверил папку, как показано ниже:
__pycache__ requests.pyc test-1.py test-requests.py
Я видел, что в папке есть файл questions.pyc. Поэтому я удалил файл reports.pyc в папке. Затем я выполнил приведенный ниже тестовый скрипт. это работает сейчас.
$ python test-requests.py
200
#! /usr/bin/env python
# the content of test-requests.py
import requests
from requests import get
r = requests.get('http://httpbin.org/get')
print (r.status_code)
Ответ 9
Проверьте, есть ли в вашей родительской папке файл python с именем reports.py. В этом случае это неправильный пакет, который импортируется.