1. 问题描述
\quad
突然发现spyder的Editor无法自动提示/完成代码(但是在IPython界面却可以),使用非常不方便。
\quad
\quad 在spyder官网只找到了Common Illnesses这个链接:
-
文档只是说明了是
LSP has stopped working
这个原因 —— 如果代码完成、帮助和分析可能会停止工作,此时下图中点击红色圆圈处显示为LSP Python: Down
的状态(正常状态是下图中显示的LSP Python: ready
) -
可以尝试在下图中点击红色圆圈处的
LSP Python
并选择Restart Python Language Server
来重启LSP
服务(但是无论怎么restart 都没办法)。
\quad -
有时打开Spyder会出现这种warning,说是防火墙或者杀毒软件的问题(关掉防火墙/杀毒软件也没用)
\quad -
更改spyder设置(Tools — Perferences — Advanced settings,在下面几个复选框打勾)仍然没法解决
2. 解决方法
\quad
实在没办法了只好试试通过pip install spyder --force-reinstall
重装spyder,总算是发现了问题所在:更新到Spyder5.2之后,Jedi的版本导致了和Python Language Server的不兼容
。
\quad
\quad 安装的spyder5.2.0所搭配的Python Language Server版本为0.36.2,需要与之搭配的Jedi版本<0.18.0, >=0.17.2,但是pip安装的jedi版本是0.18.1,两者不兼容。因此,只需要安装与Python Language Server 0.36.2匹配的Jedi版本即可。
\quad
首先查询所有的Jedi版本:
\quad
\quad
然后重新安装满足要求(Jedi<0.18.0, >=0.17.2)的版本pip install jedi==0.17.2
:
\quad
\quad
安装完成之后启动Spyder,LSP Python: ready
状态正常了