Ubuntu环境下Python Tweepy脚本运行出现AttributeError解码错误求助
解决Python3环境下tweepy爬虫的
AttributeError: 'str' object has no attribute 'decode'问题 这个问题我之前也碰到过,根源是你服务器Ubuntu环境里安装的requests-oauthlib版本太老旧,没有适配Python3的字符串处理逻辑——Python3中str本身就是Unicode字符串,不存在decode方法,但旧版本的requests-oauthlib还在假设传入的是bytes类型去调用decode,所以触发了报错。
下面是几种解决方法,按优先级推荐:
1. 优先升级requests-oauthlib到兼容版本
这是最稳妥的方案,新版本已经修复了这个字符串处理的bug:
- 先检查当前安装的版本:
pip show requests-oauthlib - 升级到最新稳定版:
pip install --upgrade requests-oauthlib - 如果遇到依赖冲突,可以指定一个明确适配Python3的版本(1.0.0及以上都兼容):
pip install requests-oauthlib>=1.0.0
2. 临时手动修复第三方包代码(不推荐)
如果暂时无法升级包,可以手动修改出错的函数,但注意这种修改会在包更新后被覆盖:
找到服务器上的/usr/lib/python3/dist-packages/requests_oauthlib/oauth1_auth.py文件,定位到to_native_str函数,把原来的代码:
def to_native_str(string): return string.decode('utf-8')
替换为:
def to_native_str(string): if isinstance(string, bytes): return string.decode('utf-8') return string
这样函数会先判断输入类型,只有bytes才调用decode,str直接返回,就不会触发错误了。
3. 确认tweepy版本兼容性
另外也可以检查下你使用的tweepy版本,确保它和Python3.5以及升级后的requests-oauthlib兼容。如果tweepy版本也比较老,建议一并升级:
pip install --upgrade tweepy
内容的提问来源于stack exchange,提问作者user7736676
相关产品推荐
相关产品推荐

