Python 3.9下出现"AttributeError: module 'tweepy' has no attribute 'StreamListener'"错误。

7
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类。但是使用该类会以此结束。例如,即使存在on_status函数,也没有status.text。我有点困惑。

他们没有更新文档,我不知道为什么!我也像你一样掉进了陷阱。 - Peyman
3个回答

12

最近发布了Tweepy v4.0.0,它将StreamListener合并到了Stream中。

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


是的,谢谢。那就是正确的方式。 - Nayjer

6

如@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"])

1
如果你看一下模块,正确引用 StreamListener 的方式是 tweepy.streaming.StreamListener,而不是 tweepy.StreamListener

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接