[LSP] 试用Python开发新包 lsp-pyright

之前一直在使用和维护lsp-python-ms。但不幸的是微软准备废弃掉它,转推pyright和pylance。pylance包含了AI 智能补全等功能,但它的License明确表示不能用于VS和VSCode之外的编辑器中。所以社区讨论决定基于pyright开发lsp-pyright。目前本地测试基本可用了,跟mspyls相比功能更强大,使用也很顺畅,只有些小地方略有不同。

lsp-python-ms 我会再继续维护一段时间,逐渐转移到 lsp-pyright 开发上。目前lsp-pyright正在申请mepla。

18赞

感谢大佬提供的资讯,那我也要跳了…

动作很迅速啊,歪个楼,微软不让大家用pylance是什么想法?

跟上大佬的脚步,准备迁移…

Pylance = Pyright + IntelliCode AI models (not open-source)

a) General. You may install and use any number of copies of the software only with Microsoft Visual Studio, Visual Studio for Mac, Visual Studio Code, Azure DevOps, Team Foundation Server, and successor Microsoft products and services (collectively, the “Visual Studio Products and Services”) to develop and test your applications.

Pyright 不是一个 type checker 吗?咋又成了 language sever啦

pyright 本身只是一个type checker,但是MS顺带基于它为VSCode实现了一个language server,有补全等功能。这个是lsp-mode可以利用的资源。server是基于node的,效率还行。mspyls是基于C#的,效率不成问题,就是维护越来越慢。

看来TS比C#在微软内部地位高啊

pyright 跟 pylance 有没有对比效果呀。

vscode里可以装装来看,pylance还只是preview版。目前没啥差别,以后就不知道了

1赞

有没有些来源表明microsoft 要废弃掉lsp-python-ms?看github,也还在更新,也没有说明要放弃?现在用lsp-python-ms 感觉还挺不错的,即使一段时间不更新,只求稳定,是不是也可以了?

看这里。lsp-python-ms 还是可以继续使用,不过更多的精力会放到lsp-pyright开发中。

The future of the Microsoft Python Language Server

Our long-term plan is to transition our Microsoft Python Language Server users over to Pylance and eventually deprecate and remove the old language server as a supported option.

1赞

多谢!看来是在主推pylance,不知道lsp-pyright会如何。但无论如何,pylance的流行,估计又会吸引一大波人考虑VScode。

我现在主要依赖Emacs的多窗口管理,spacemacs的快捷键,magit和多语言在一个编译器中的支持,比如latex,R,cpp,python。如果这些都可以在VSCode里面有对应,估计我也会去尝试一波了。。。

anyway, 非常感谢你维护lsp-python-ms,我也是看了你的推荐, 从原来的lsp-python转到这个上面,真的非常好用,速度其实已经很快了。

觉得好用就好!我也是lsp-pyright的开发和维护者之一。

1赞

首先谢谢大佬维护lsp-python-ms, 又跟进了pyright. 使用了一下, 速度貌似挺快的. 有两个疑问:

  1. 没有一个类似lsp-python-ms-extra-paths 的变量, 用来配置额外的第三方包
  2. lsp-ivy-workspace-symbol 这个功能没法用. 是pyright 没有 workspace/symbol 这个功能吗, 还是初始化参数的原因啊

lsp-pyright还不完善。这两个功能容我们再讨论下。

(pylance 不是可以悄悄的 node xxxx --stdio 嘛(

可以啊,个人使用没有问题。但发布显然是违反license的