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

emacs环境识别的还是python2.7,请设置exec-path。

使用pyright过程中有遇到过这种情况么(lsp-log中输出的错误日志)

看起来是conda下的安装出问题了,没有遇到呢

在使用lsp-pyright的时候非常卡顿,编辑的时候敲几个字就卡,node进程会点满一个cpu core,请问如何去debug。

emacs 27.1 Windows 10 node v14.15.0

反馈一下, mac下pyright很流畅, 应该和windows有关系

1 个赞

暂时还是回退到 ms python 算了,等pyright在windows成熟再换吧。 用其他的编辑器右手肩膀痛,用Emacs就不会,鼠标手。

我一直用的 python2.7,之前用 ms-pyls 在上周开始用 pyright, 但是今天更新了一波发现 python2.7 的项目 所有 2.7 里面 pip 安装的包 pyright 都显示 Import xxx could not be resolved, 但是我跑 python3 的项目里面的 第三方包都没这个错误。查看 lsp-log 显示 Python version 2.7 from interpreter is unsupported,这意思是 以后 python2.7 的项目都不能用 pyright 了么,我在 pyright 也没找到说 pyright 不支持 2.7 了啊,这是咋回事。

我在项目根目录执行 pyright --lib 也显示 Python version 2.7 from interpreter is unsupported,但是 vscode pylance 2.7 的项目用着没啥问题,是我忽略了什么配置么

虽然但是……我建议你尽早放弃Python 2,越来越有更多的软件将或已经停止支持Python 2了。Python 2 is officially DEAD.

好的 谢谢你,但是目前我还是有一个 python2.7的项目在维护,我暂时就用回 my-pyls 先。

楼主你好,最近用lsp-pyright,攒了几个问题,请教一下:

  1. 自动开的pyright和pyright::stderr两个buffer,一直是空的正常吗?出错的时候想查查原因,看不到详细报错
  2. 如下图,pip安装的类库(site-packages里),用lsp-mode分析,也需import project root吗?也就是说lsp-mode看待类库和个人代码是无差别的吗?
  3. lsp-mode的workspace, session, project这些概念,有没有文档给个定义、差别解释?(这个问题几个月前在lsp-mode的slack里问过,作者简单回了一下,我也没太明白,他说稍后会写到文档里,我近期翻了几遍文档也没有 :sweat_smile:
  4. 第3项里提到的slack(好像是slack,记得是个即时聊天)现在去找slack地址又找不到了,能给下地址吗?
  5. 是不是c语言写的代码,python里导入之后就找不到定义啊,比如torch.sigmoid好像找不到?

1.可以打开 lsp-log-io,或者到 /tmp 目录下看报错

4.应该是 gitter

5.参考下这个 issue

1 个赞

我也遇到了同样的问题,我是macOS,补全很慢,等补全的时候pyright-server进程会占很多CPU。不知你解决了没有?

pyright 1.1.117 到 1.1.120版本好像有bug,性能有问题 https://github.com/microsoft/pyright/issues/1613 好像今天更新解决了,也许可能是这个原因

看了下我的pyright版本,是1.1.121…所以看样子不是这个问题?反正就是补全要等好几秒,然后弹出补全菜单后,每输入一个字母都会卡顿两三秒…很奇怪,我用mspyls就很顺滑,补全都很快

我的设置就是lsp-pyright github上给的那样,系统是macOS Mojave,真不知道是啥问题

好像是1.1.122修了bug,要不你再试试,我不用mac,所以不清楚怎么回事

我本地macOS BigSur上试了下,补全挺快,可能是我的工程小吧,没有遇到你说的情况。pyright server占用CPU,可能需要看看pyright的配置情况。

下午研究了一下,原来是我之前对pyright有误解。现在明白它自带的只有builtin library的stubs文件,对于pandas这样的库就没有,再加上lsp-pyright中默认把 useLibraryCodeForTypes设成了true,所以pyright对于像pandas这种没有stubs文件的库就会去分析它的源代码,导致cpu占用飙升,同时可能使emacs变卡。我把useLibraryCodeForTypes设为false,就解决了卡的问题,当然与此同时pandas这类库的补全和类型检查功能也没了,除非有stubs文件。

另外,想借机问下像这种第三方库的stubs文件都是上哪搞?

1 个赞

看这里:pyright/type-stubs.md at main · microsoft/pyright · GitHub

请问这种subs文件可以生成出来放哪里全局用吗?看这个介绍似乎是project-based的。

对pyright了解甚少。谢谢!

太麻烦了,除非常用第三方库普遍自带stubs,或者pyright把常用的stubs都做进去