Подтвердить что ты не робот

'Объект модуля не имеет атрибута' 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'

4b9b3361

Ответ 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. В этом случае это неправильный пакет, который импортируется.