PythonAnywhere运行binance SDK报websockets相关ModuleNotFoundError如何解决
首先完整报错信息如下:
23:56 ~ $ python3.8 connect.py Traceback (most recent call last):
File "connect.py", line 7, in
from binance.client import Client File "/home/utkandD/.local/lib/python3.8/site-packages/binance/init.py",
line 10, in
from binance.depthcache import DepthCacheManager, OptionsDepthCacheManager, ThreadedDepthCacheManager # noqa File
"/home/utkandD/.local/lib/python3.8/site-packages/binance/depthcache.py",
line 7, in
from .streams import BinanceSocketManager File "/home/utkandD/.local/lib/python3.8/site-packages/binance/streams.py",
line 13, in
from websockets.exceptions import ConnectionClosedError ModuleNotFoundError: No module named 'websockets.exceptions';
'websockets' is not a package
可按照以下顺序排查解决:
- 排查本地同名文件冲突
首先检查执行python3.8 connect.py的当前目录,是否存在名为websockets.py的文件,或者名为websockets的文件夹。如果存在,Python导入时会优先加载当前目录的同名文件/文件夹,覆盖系统安装的正式websockets包,直接触发该报错。解决方法是修改本地的同名文件/文件夹名称,之后重新运行脚本即可。 - 验证
websockets包是否针对Python3.8正确安装
PythonAnywhere环境通常存在多个Python版本,直接用pip install可能会把包安装到其他Python版本的依赖目录,不被Python3.8识别。执行以下命令确认安装:pip3.8 install --user --upgrade websockets
安装完成后执行python3.8 -c "import websockets; print(websockets.__version__)"验证是否能正常导入,如果无报错说明安装正常。 - 排查版本兼容性问题
如果你已经安装了websockets还是报错,可能是版本和你使用的python-binanceSDK不匹配。先卸载现有版本,执行pip3.8 uninstall -y websockets python-binance,再重新安装经过验证的兼容版本组合即可:pip3.8 install --user python-binance==1.0.19 pip3.8 install --user websockets==10.4 - 排查虚拟环境问题
如果你运行脚本时使用了虚拟环境,需要确认你执行安装命令时也处于同一个虚拟环境下,避免包安装到全局环境、虚拟环境中找不到的问题。
内容的提问来源于stack exchange,提问作者utkanduyar

