Reputation: 419
I'm trying to connect to an API with python, using WebSocketApp, and I cannot seem to do it. No matter what I try, I keep getting this error:
AttributeError: 'module' object has no attribute 'WebSocketApp'
Here is the simple code I am using
import websocket
import json
def on_open(ws):
json_data = json.dumps({'data':'value'})
ws.send(json_data)
def on_message(ws, message):
print('data update: %s' % message)
if __name__ == "__main__":
apiUrl = "appurl"
ws = websocket.WebSocketApp(apiUrl, on_message = on_message, on_open = on_open)
ws.run_forever()
Any help will be greatly appreciated, all the solutions I have found online have not worked for me.
Upvotes: 28
Views: 52459
Reputation: 1
The problem is that you possibly installed both websocket
and websocket-client
.
Remove websocket
and just let websocket-client
Upvotes: 0
Reputation: 37
The issue can be generated because the version. Version v1.3 and above does me the same problem but installing v1.2.3 the issue disappeared...
Upvotes: 0
Reputation: 1096
In this case, You should uninstall the possible inconsistent previous versions and install websocket-client again:
pip uninstall websocket-client
pip uninstall websocket
an then install a new version:
pip install websocket-client
Upvotes: 35
Reputation: 5609
It looks like you're trying to use features of the websocket-client
package and not just the websocket
package. Pip-install websocket-client
from the command line (or install it using whatever other package manager you have), then try running your code again.
pip install websocket-client
Upvotes: 37
Reputation: 369074
Make sure that you didn't name your file as websocket.py
; Otherwise, it will prevent import of the desired third-party module websocket
; because your module is searched first according to sys.path
module search path.
Rename your module to other name, and make sure to clean websocket.pyc
if there it is.
Upvotes: 26