在Python Everywhere运行PRAW时遇AttributeError:Submission无reply属性
解决PRAW机器人评论时的AttributeError问题
嘿,这个问题我太熟了!你遇到的AttributeError: 'Submission' has no attribute 'reply'根本原因就是本地和Python Everywhere上的PRAW版本不匹配,我帮你拆解下怎么解决:
1. 先确认版本差异
PRAW在不同版本间对API方法做了大幅调整:旧版本(比如3.x及更早)里,对帖子(Submission)直接评论用的是reply()方法,但从PRAW 4.0开始,这个方法被移除了,取而代之的是comment()方法。
你可以分别在本地和Python Everywhere的终端里运行下面的代码,对比版本号:
import praw print(praw.__version__)
2. 两种解决方案任你选
方案一:适配Python Everywhere的新版本PRAW
如果Python Everywhere上装的是较新的PRAW,直接修改代码里的评论逻辑:
把原来的:
submission.reply("你的评论内容")
改成:
submission.comment("你的评论内容")
另外注意,新版本PRAW的登录方式也和旧版本不同,你代码里的reddit.login()写法在新版本里会失效,得改成构造实例时直接传入参数:
reddit = praw.Reddit( client_id="你的客户端ID", client_secret="你的客户端密钥", user_agent="自定义的用户代理(比如:my_bot_v1.0 by u/你的用户名)", username="你的Reddit用户名", password="你的Reddit密码" )
方案二:让Python Everywhere安装和本地一致的旧版本PRAW
如果你不想改代码,也可以在Python Everywhere的终端里运行命令,安装和本地相同版本的PRAW(把下面的3.6.0换成你本地的版本号):
pip install praw==3.6.0 --user
这样调整后,机器人应该就能在Python Everywhere上正常评论啦!
内容的提问来源于stack exchange,提问作者Jakub Koziol
相关产品推荐
相关产品推荐

