【问题标题】:"AttributeError: module 'tweepy' has no attribute 'StreamListener'" with Python 3.9“AttributeError:模块'tweepy'没有属性'StreamListener'”与Python 3.9
【发布时间】:2021-11-23 18:10:36
【问题描述】:
class MyStreamListener(tweepy.StreamListener):
    def on_status(self, status):
        print(status.text)  # prints every tweet received

    def on_error(self, status_code):
        if status_code == 420:  # end of monthly limit rate (500k)
            return False

我使用 Python 3.9 并通过 pip 安装了 Tweepy。我在课堂上得到AttributeError。 我的导入只是import tweepy。身份验证得到正确处理。 在streaming.py 文件中,我有类Stream。但是使用这个类就结束了。例如没有status.text,即使有on_status 函数。我有点困惑。

【问题讨论】:

  • 他们没有更新文档我不知道为什么!我也和你一样落入陷阱。

标签: python twitter attributes tweepy


【解决方案1】:

如果您查看模块,引用StreamListener 的正确方法是tweepy.streaming.StreamListener,而不是tweepy.StreamListener

【讨论】:

    【解决方案2】:

    Tweepy v4.0.0 于近期发布,将StreamListener 合并为Stream

    我建议您将代码更新为子类 Stream
    或者,您可以降级到 v3.10.0。

    【讨论】:

    • 好的,谢谢。这就是要走的路。
    【解决方案3】:

    正如@Harmon758 所说,他们在版本 4 之后将 StreamListener 合并到 Stream 中。您也不需要单独创建 api auth 对象。代码如下:

    from tweepy import Stream
    
    class MyStreamListener(Stream):
        def on_status(self, status):
            print(status.text)  # prints every tweet received
    
        def on_error(self, status_code):
            if status_code == 420:  # end of monthly limit rate (500k)
                return False
    
    
    stream = MyStreamListener('consumer_key',
                              'consumer_secret',
                              'access_token',
                              'access_token_secret')
    
    stream.filter(track=["Python"], languages=["en"])
    

    【讨论】:

      猜你喜欢
      • 2021-12-09
      • 2021-06-13
      • 2021-08-30
      • 2022-11-05
      • 1970-01-01
      • 2018-04-28
      • 2022-10-16
      • 2023-04-06
      • 2017-06-14
      相关资源
      最近更新 更多