"Attributeerror: Module 'Tweepy' Has No Attribute 'Streamlistener'" with Python 3.9
Class Mystreamlistener(Tweepy. Streamlistener): Def On_Status(Self, Status): Print(Status. Text) # Prints Every Tweet Received Def On_Error(Self, Status_Code)...
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
I use Python 3.9 and installed Tweepy via pip. I get the AttributeError on the class line.
My import is just import tweepy. Authentication gets correctly handled.
In the streaming.py file, I have the class Stream. But using this class ends in that. There is for example no status.text, even if there is the on_status function. I am a little bit confused.
3 Answers
Tweepy v4.0.0 was released recently and it merged StreamListener into Stream.
I recommend updating your code to subclass Stream instead.
Alternatively, you can downgrade to v3.10.0.
As mentioned by @Harmon758, they merged StreamListener into Stream after version 4. Also you don`t need to create the api auth object separately. Here is the code:
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"])
If you look at the modules, the correct way to reference StreamListener is tweepy.streaming.StreamListener, not tweepy.StreamListener.