属性错误:'module'对象没有属性'WebSocketApp'。

26
我正在尝试使用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()

任何帮助都将不胜感激,我在网上找到的所有解决方案都没有对我起作用。

5个回答

34

看起来你正在尝试使用 websocket-client 包的功能,而不仅仅是 websocket 包的功能。请从命令行安装 websocket-client(或使用任何其他包管理器进行安装),然后再次尝试运行代码。

pip install websocket-client

28
在这种情况下,您应卸载可能不一致的旧版本并重新安装websocket-client:
pip uninstall websocket-client
pip uninstall websocket

然后安装新版本:

pip install websocket-client

22

请确保你没有将文件命名为 websocket.py;否则,它会阻止第三方模块 websocket 的导入;因为根据 sys.path 模块搜索路径,先搜索到了你的模块。

将你的模块重命名为其他名称,并确保清除 websocket.pyc 文件(如果存在)。


在我的情况下,我将文件命名为socket.py,将其更改为其他名称就可以解决问题了。 - King Alawaka

0
问题可能是由版本引起的。版本v1.3及以上会出现相同的问题,但安装v1.2.3后问题消失了...

0
问题是您可能同时安装了websocketwebsocket-client。 请卸载websocket,只保留websocket-client

这个回答对于 https://dev59.com/QlgQ5IYBdhLWcg3w1nfm#42144096 和 https://dev59.com/QlgQ5IYBdhLWcg3w1nfm#53444938 的回答没有太多的补充。 - Keith John Hutchison

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