web-dev-qa-db-ja.com

AttributeError: 'module'オブジェクトに属性 'WebSocketApp'がありません

WebSocketAppを使用してPythonでAPIに接続しようとしていますが、接続できないようです。何をしようとしても、このエラーが発生し続けます。

AttributeError: 'module' object has no attribute 'WebSocketApp'

これが私が使っている簡単なコードです

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()

私がオンラインで見つけたすべての解決策は私のために働いていません。

13
user2501169

websocketパッケージだけでなく、websocket-clientパッケージの機能を使用しようとしているようです。コマンドラインからwebsocket-clientをPipインストールして(または他のパッケージマネージャーを使用してインストールして)、コードをもう一度実行してみます。

pip install websocket-client
17
Billy

ファイルにwebsocket.pyという名前を付けていないことを確認してください。そうしないと、目的のサードパーティモジュールwebsocketのインポートが妨げられます。 sys.path モジュール検索パスに従ってモジュールが最初に検索されるためです。

モジュールの名前を他の名前に変更し、存在する場合は必ずwebsocket.pycを削除してください。

8
falsetru

この場合、矛盾する可能性のある以前のバージョンをアンインストールして、websocket-clientを再度インストールする必要があります。

pip uninstall websocket-client
pip uninstall websocket

次に、新しいバージョンをインストールします。

pip install websocket-client
5
Amirkhm