‘El objeto del módulo no tiene atributo’ obtener ‘¿Peticiones de error de Python?

Acabo de instalar el módulo de solicitudes utilizando ‘easy_insatll’ y traté de ejecutar el código de demostración de este tutorial ,

import requests payload = {'username': 'xxxx', 'password': 'xxxxx'} r = requests.get('https://github.com/timeline.json') 

pero me sale este error: AttributeError: 'module' object has no attribute 'get'

¿alguna idea? Gracias

Usted está importando todos los nombres del módulo de requests a su espacio de nombres local, lo que significa que ya no necesita prefijarlos con el nombre del módulo:

 >>> from requests import * >>> get  

Si en su lugar importara el módulo con una statement de import requests , agregó el módulo a su espacio de nombres y tiene que usar el nombre completo:

 >>> import requests >>> requests.get  

Tenga en cuenta que los ejemplos anteriores son los que obtuve de mis pruebas en el intérprete. Si obtiene resultados diferentes, está importando el módulo incorrecto; compruebe si tiene un archivo requests.py adicional en su paquete de python:

 >>> import requests >>> print requests.__file__ /private/tmp/requeststest/lib/python2.7/site-packages/requests/__init__.pyc 

También puede probar la lista de nombres proporcionada por el módulo de 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'] 

Este es el síntoma típico de un archivo requests.py no relacionado (o requests.pyc ) que se encuentra en su directorio actual, o en algún otro lugar de PYTHONPATH . Si este es el caso, elimínelo o cámbiele el nombre, ya que está siguiendo el módulo que realmente desea importar.

Tienes que variantes de cómo solucionar esto.

 import requests 

o

 r = get('https://github.com/timeline.json') 

PS primero es preferible

Como ya se dijo, el problema más común es que tiene un archivo requests.py en algún lugar de su PYTHONPATH .

Pero como el módulo de solicitudes utiliza otros módulos internamente (por ejemplo, de la biblioteca estándar de Python), también puede haber problemas con otros nombres de archivo. Por ejemplo, tuve el mismo problema cuando nombré una secuencia de comandos http.py En ese caso, la salida del print dir(requests) de print dir(requests) es correcta, lo que dificulta un poco el seguimiento del error …

Cometí un error de que el nombre del archivo de prueba era requests.py. Entonces, cuando importo requests.py, no es lo que quiero importar. Luego, renombré el nombre del archivo de prueba. ¡¡¡Funciona!!!

Yo tenía el mismo error.

Todo lo que hice fue guardarlo como requests.py

Luego lo guardé como otro nombre. Y el problema resuelto.

Esto podría ser un error del usuario si está trabajando con un marco como Django que también tiene objetos de solicitud.

Constantemente me confunden los Django:

 request.POST 

y request :

 request.post 

Ese era mi problema, de todos modos. Preparándose para los votos a la baja.

Me pasó el mismo problema en Mac y Ubuntu. Quiero probar el comando de solicitudes. Utilicé el nombre de solicitudes / carpeta y el nombre de archivo requests.py en Mac. Pero Python muestra el mensaje “ImportError: no se puede importar el nombre obtenido”. Por lo tanto, he cambiado el nombre de las solicitudes / carpeta y el archivo requests.py para probar-peticiones / y test-requests.py. Todavía recibió el mensaje. Revisé la carpeta de la siguiente manera:

 __pycache__ requests.pyc test-1.py test-requests.py 

Vi que la carpeta tiene el archivo requests.pyc. Así que borré el archivo requests.pyc en la carpeta. Luego, ejecuté el siguiente script de prueba. Está funcionando ahora.

 $ 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)