2012-09-04 45 views
13

我只是用“easy_insatll” 安装请求模块,我试图运行此tutrorial的演示代码,'模块对象没有属性'get'Python错误请求?

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

,但我得到这个错误: AttributeError的:'module' object has no attribute 'get'

什么想法? 谢谢

回答

9

要导入从requests模块的所有名称到本地的命名空间,这意味着你不必与模块名了前缀他们:

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

如果要导入与import requests声明模块代替,你添加的模块本身的命名空间,你必须用全称:

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

注意上面的例子是我从我的翻译测试了。如果你得到不同的结果,你正在导入错误的模块;检查是否有一个额外的requests.py文件在你的Python包:

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

谢谢,我纠正了这个问题,但他们的作品 – mojians

+1

谢谢,问题解决了,我删除了其他请求目录,它的工作原理 – mojians

+1

是重复存在的文件(requests.py)是问题所在,我写了一个名为requests.py的文件,在这里我导入了“requests”模块。所以python引擎在最近的一个文件中查看get方法,即当前文件名。解决方案是重命名我正在写的文件。 – SIslam

3

你必须改变如何解决这个问题。

import requests 

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

附:第一个是最好

+0

谢谢,我纠正了代码,但错误仍然弹出 – mojians

+0

@mojians让我看看'print dir(requests)'pls。 –

+0

['__builtins__','__doc__','__file__','__name__','__package__','requests'] – mojians

19

这是一个无关requests.py的典型症状:

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

您还可以测试的名称,列出了requests模块提供(或requests.pyc)文件位于当前目录中,或位于PYTHONPATH的其他位置。如果是这种情况,请删除或重命名它,因为它会隐藏您真正想要导入的模块。

+2

谢谢你,这正是我遇到的 – mojians

3

如前所述,最常见的问题是您的PYTHONPATH中某处有requests.py文件。

但是,由于请求模块在内部使用其他模块(例如来自标准python库),所以其他文件名也可能存在问题。例如,当我命名脚本http.py时,我遇到了同样的问题。在这种情况下,print dir(requests)的输出是正确的,这使得跟踪错误更加困难...

+1

谢谢。我只是写了一些示例代码。我从来没有打算导入它,但事后看来,json.py并不是最明智的文件名:/ –

1

如果您正在使用像Django这样的具有请求对象的框架,则可能会出现用户错误。

我不断地得到由Django的困惑:

request.POST 

request的:

request.post 

这是我的问题,反正。支持反对票。

1

我有同样的错误。

我所做的只是将它保存为requests.py

然后我保存为其它名称。 并解决问题。

+0

非常感谢,就是这样。 – 2016-07-08 09:40:24

2

我犯了一个错误,测试文件的名称是requests.py。 因此,当我导入requests.py时,它不是我想要导入的内容。 然后,我重命名测试文件的名称。有用!!!

相关问题