Python解释器运行正常,存为.py文件出现requests.post属性错误
解决AttributeError: module 'requests' has no attribute 'post'的问题
这问题我之前踩过坑,大概率是文件名冲突在搞鬼!
问题根源
你有没有把脚本文件名命名为requests.py?如果是的话,当你执行import requests时,Python会优先加载当前目录下的这个同名文件,而不是你通过pip安装的第三方requests库。你自己的脚本里根本没定义post方法,自然就抛出这个错误了。
至于为什么在Python解释器里运行正常?那是因为解释器的工作目录可能和你保存脚本的目录不同,或者你在解释器里导入requests时,当前目录没有同名文件干扰,所以能正确加载第三方库。
解决步骤
- 第一步:把你的脚本文件名改成别的,比如
email_notifier.py,绝对不能和第三方库重名。 - 第二步:删除目录下的
__pycache__文件夹,里面缓存了错误的模块信息,不清理的话可能还会出问题。 - 第三步:重新运行脚本,应该就能正常调用
requests.post了。
验证方法
你可以在脚本里加一行代码来确认问题:
import requests print(requests.__file__)
如果输出的路径是你自己的脚本路径,那肯定就是文件名冲突了;如果是第三方库的安装路径,那再排查其他可能(不过解释器里能运行的话这种概率极低)。
内容的提问来源于stack exchange,提问作者Sam Flynn
相关产品推荐
相关产品推荐

