我刚刚通过 using 安装了 Requests 模块,easy_install
并尝试运行本教程的演示代码,
import requests
payload = {'username': 'xxxx', 'password': 'xxxxx'}
r = requests.get('https://github.com/timeline.json')
但我收到此错误:
属性错误:
'module' object has no attribute 'get'
我刚刚通过 using 安装了 Requests 模块,easy_install
并尝试运行本教程的演示代码,
import requests
payload = {'username': 'xxxx', 'password': 'xxxxx'}
r = requests.get('https://github.com/timeline.json')
但我收到此错误:
属性错误:
'module' object has no attribute 'get'
这是当前目录requests.py
或. 如果是这种情况,请删除或重命名它,因为它会遮蔽您真正要导入的模块。requests.pyc
PYTHONPATH
您正在将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']
我有同样的错误。
我所做的只是将其另存为requests.py
然后我将它保存为其他名称。并且问题解决了。
如前所述,最常见的问题是requests.py
您的PYTHONPATH
.
但由于 requests 模块在内部使用其他模块(例如来自标准 python 库),其他文件名也可能存在问题。例如,我在命名脚本时遇到了同样的问题http.py
。在那种情况下,输出print dir(requests)
是正确的,这使得追踪错误变得更加困难......
您必须了解如何解决此问题。
import requests
或者
r = get('https://github.com/timeline.json')
PS 第一个更好
我弄错了测试文件的名称是requests.py。所以,当我导入 requests.py 时,它不是我想要导入的。然后,我重命名了测试文件的名称。有用!!!
请检查您的父文件夹中是否有一个名为requests.py的 python 文件。在这种情况下,导入的是错误的包。
当您将文件命名为 requests.py 时,就会发生这种情况。所以请将文件名更改为其他名称,因为 python 不区分模块文件和您的代码文件。
如果您正在使用像 Django 这样也具有请求对象的框架,这可能是用户错误。
我经常对 Django 感到困惑:
request.POST
和request
的:
request.post
无论如何,那是我的问题。支持反对票。
更改文件名解决了我的解决方案。
以前的名字是:random.py
和更改的名称是:hello.py
我在 Mac 和 Ubuntu 上遇到了同样的问题。我想测试 requests 命令。我在 Mac 上使用了requests/文件夹名称和requests.py文件名。但 Python 显示“ImportError:无法导入名称获取”消息。因此,我将 requests/ 文件夹和 requests.py 文件重命名为 test-requests/ 和 test-requests.py。它仍然收到了消息。我检查了以下文件夹:
__pycache__ requests.pyc test-1.py test-requests.py
我看到该文件夹有 requests.pyc 文件。所以我删除了文件夹中的requests.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)
有时删除以前有问题的文件或目录会更容易。rm
如果您在终端中使用 mac ,请使用。
这是更多信息的链接:https ://www.macworld.com/article/2082021/master-the-command-line-deleting-files-and-folders.html