【问题标题】:AttributeError: decoding error while running Python tweepy script in UbuntuAttributeError:在 Ubuntu 中运行 Python tweepy 脚本时出现解码错误
【发布时间】:2018-07-10 13:17:13
【问题描述】:

我有一个 Python 3.5 脚本,它本质上是一个 Twitter 抓取工具,它使用 tweepy 包及其 StreamListener 函数收集推文。

现在我的脚本在命令 shell 中完美运行,但是当我尝试在服务器的 Ubuntu 环境中运行它时,我收到了解码错误。

   File "/usr/lib/python3/dist-packages/tweepy/streaming.py", line 445, in filter
self._start(async)
   File "/usr/lib/python3/dist-packages/tweepy/streaming.py", line 361, in _start
self._run()
   File "/usr/lib/python3/dist-packages/tweepy/streaming.py", line 294, in _run
raise exception
   File "/usr/lib/python3/dist-packages/tweepy/streaming.py", line 247, in _run
verify=self.verify)
   File "/usr/lib/python3/dist-packages/requests/sessions.py", line 454, in reque                                                                                                             st
prep = self.prepare_request(req)
   File "/usr/lib/python3/dist-packages/requests/sessions.py", line 388, in prepa                                                                                                             
re_request
hooks=merge_hooks(request.hooks, self.hooks),
   File "/usr/lib/python3/dist-packages/requests/models.py", line 297, in prepare
self.prepare_auth(auth, url)
   File "/usr/lib/python3/dist-packages/requests/models.py", line 490, in prepare                                                                                                             _auth
   r = auth(self)
   File "/usr/lib/python3/dist-packages/requests_oauthlib/oauth1_auth.py", line 7                                                                                                             1, in __call__
r.url = to_native_str(r.url)
   File "/usr/lib/python3/dist-packages/requests_oauthlib/oauth1_auth.py", line 1                                                                                                             4, in to_native_str
return string.decode('utf-8')

AttributeError: 'str' object has no attribute 'decode'

这是有道理的,因为您无法解码已经是字符串的字符串。但我的问题是如何解决这个问题,因为这是包中发生的错误?

【问题讨论】:

  • 您可能正在尝试解码已解码的字符串!
  • 你在ubuntu机器上运行python3.5吗?
  • 我在ubuntu机器上运行python 3.5.2

标签: python ubuntu error-handling tweepy attributeerror


【解决方案1】:

问题似乎来自 requests-oauthlib,您正在运行它的旧版本,并且该问题似乎已从 4.0.1 开始修复。

升级你的系统(Ubuntu 16.10的打包版本是7.0):

sudo apt update && apt upgrade

或者使用 pip 安装:

sudo pip3 install requests-oauthlib

【讨论】:

  • 很好的建议,但不幸的是它不能解决问题。我更新了软件包并通过sudo apt install python3-requests-oauthlib 重新安装了 requests-oauthlib,但它会返回相同的错误。
  • 你尝试过 pip 吗?如果失败,也许尝试从 github 安装?
猜你喜欢
  • 1970-01-01
  • 2019-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-23
  • 1970-01-01
  • 2018-04-14
相关资源
最近更新 更多