我正在尝试使用requests将JSON数据发布到HTTP端点,但是我现在遇到了这个奇怪的错误(我以前没有问题地使用过它)。
任何故障排除都值得赞赏。
代码:
req = requests.post(HTTP_ENDPOINT, data=json.dumps(data))
输出:
AttributeError:模块'requests'没有属性'post'
答案 0 :(得分:0)
您是否在文件顶部写了import requests
?如果没有,那是你的问题。如果是,那么对我来说下一步的调试是
print dir(requests)
,因为这将告诉您您的请求对象实际上具有什么属性。
答案 1 :(得分:0)
确保HTTP_ENDPOINT和数据有效,应如下所示:
>>> import json
>>> url = 'https://api.github.com/some/endpoint'
>>> payload = {'some': 'data'}
>>> r = requests.post(url, data=json.dumps(payload))
除了自己对dict进行编码外,您还可以使用json参数(在2.4.2版中添加)直接传递dict,它将自动进行编码:
>>> r = requests.post(url, json=payload)
答案 2 :(得分:0)
如果您的文件夹中有一个名为request.py的文件,则python会将其作为模块导入,并随您使用pip安装的请求包一起导入。
这就是为什么说请求没有属性“ post”的原因。如果您在request.py中定义一个变量,如下所示:
# requests.py
post = lambda *arg: print('unitended concequence')
您可能会看到它打印出该声明,而不是抱怨帖子请求中不包含帖子。 解决方案是重命名文件,以使它们不会遮盖要导入的软件包。例如,将requests.py更改为my_requests.py。