'Module object has no attribute 'get' Python error Requests?

81,705

Solution 1

You are importing all names from the requests module into your local namespace, which means you do not need to prefix them anymore with the module name:

>>> from requests import *
>>> get
<function get at 0x107820b18>

If you were to import the module with an import requests statement instead, you added the module itself to your namespace and you do have to use the full name:

>>> import requests
>>> requests.get
<function get at 0x102e46b18>

Note that the above examples is what I got from my tests in the interpreter. If you get different results, you are importing the wrong module; check if you have an extra requests.py file in your python package:

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

You can also test for the name listing provided by the requests module:

>>> 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']

Solution 2

This is the typical symptom of an unrelated requests.py (or requests.pyc) file sitting in your current directory, or somewhere else on the PYTHONPATH. If this is the case, remove or rename it, as it's shadowing the module you really want to import.

Solution 3

I had the same error.

All I did was save it as requests.py

Then I saved it as some other name. And problem solved.

Solution 4

As already stated, the most common problem is that you have a requests.py file somewhere in your PYTHONPATH.

But as the requests module internally uses other modules (e.g. from the standard python library), there might be problems with other filenames as well. For example I had the same problem when I named a script http.py. In that case the output of print dir(requests) is correct which makes tracking down the error a bit more difficult...

Solution 5

You have to variants of how to fix this.

import requests

or

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

P.S. First one is preferable

Share:
81,705
mojians
Author by

mojians

python starter

Updated on July 20, 2022

Comments

  • mojians
    mojians almost 2 years

    I just installed the Requests module by using easy_install and I tried to run the demo code of this tutorial,

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

    but I get this error:

    AttributeError: 'module' object has no attribute 'get'