亲测:lsp-python-ms vs pyls 性能

你的import sys 报错unresolved import 解决了吗

今天终于用上了,体验确实不错。感谢楼上各位大佬的贡献。

后续:打开看了一会花花绿绿的文档最后换回 anaconda,增加的0.几秒的延迟还是让人不爽 :joy:

1 个赞

"花花绿绿的文档“, 是 lsp-ui-sideline 显示的吧,给他 customize 成 nil 就清静多了。

disable 后速度有提升吗?

我主要是因为增加的延迟才滚回 anaconda 的,可能我有点过于敏感了

个人感觉 pycharm + emacs (anaconda-mode) > emacs (mspyls),我是能用 emacs 的时候都用 emacs,pycharm 作为补充,所以 emacs 的低延迟对我很重要。

据说 emacs27 + native json parser 速度提升很好,禁用 sideline 估计提升意义不大。

我的几乎所有开发都在服务器上,所以面临编辑tramp file的问题。anaconda 一直不行不知道为啥(有人说是端口问题)前几天用lsp最新版发现是支持tramp的,先用用试试。速度确实是个问题

1 个赞

我今天发现有个问题,就是使用Python 同一个文件夹下,相互import py文件都会出现unresolved-import的错误,大家有遇到过吗?

2019-07-18%2011-37-35%20%E7%9A%84%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE

坐等anacoda和jedi, 加一个lsp的option.

pyls包含jedi,什么叫jedi加个lsp的选项 :thinking:

jedi用服务器实现completion就不是jedi了吗?

难道我上面遇到的问题你们都没碰到过吗?我给github提了issue,暂时还没得到回复,写起代码来这个问题真的烦人啊

大佬,麻烦你一下,在使用mspyls时,我发现import 一个同级文件总是出现unresolved import,比如在同一个文件夹里面有a.py和b.py,如果在b文件里面import a他就会出现上面的警告,导致跟他相关的类或者函数,都不能补全.但是实际的程序调用还是正常进行了,结果也正常能够输出.

2019-07-18%2011-37-35%20%E7%9A%84%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE

尝试设置一下 lsp-python-ms-extra-paths,这个貌似是 python-language-server 的 bug,可以参考:https://github.com/Microsoft/python-language-server/issues/918

我一般都把 flycheck 关掉,用自己写的脚本来做 lint(基本上就是针对改动的文件 pylint → mypy → pytest 一波流)。

可以参考一下我的配置:https://github.com/forrestchang/.doom.d/blob/master/modules/private/my-python/config.el

1 个赞

之前它github上修复了一些bug,我昨天也给他们踢了issue,没人鸟我,他这个flycheck不是lsp时,不会出现这个问题,现在我都是关了,不管他,只用它补全了,但是强迫症的我,这段时间,又没太多时间花在emacs上,真的是揪心啊

我的理解是你并没有把目录或者文件放到一个project里。我本地测试没有问题。你可以在train 目录下touch .projectile 试试 (前提是加载projectile)。

已经安装了vscode,能直接使用那里面的mspyls吗?有成功的案例吗?

可以,只要把exe设置好…大约每次mspls升级都要改

可以写个脚本。大概下面这样就行。这个自己用的,没做一些容错上的兼容。

 (defun find-vscode-mspyls-executable ()
    (let* ((wildcards ".vscode/extensions/ms-python.python-*/languageServer*/Microsoft.Python.LanguageServer")
           (dir-and-ext (if IS-WINDOWS
                            (cons (getenv "USERPROFILE") ".exe")
                          (cons (getenv "HOME") nil)))
           (cmd (concat (file-name-as-directory (car dir-and-ext))
                        wildcards (cdr dir-and-ext))))
      (file-expand-wildcards cmd t)))

  (setq lsp-python-ms-executable
        (car (find-vscode-mspyls-executable)))
  (setq lsp-python-ms-dir
        (file-name-directory lsp-python-ms-executable))
1 个赞

用上mspyls了,确实快多了,而且好些之前不显示的也提示了(比如tkinter下的)
但还有几个问题
1,mspyls的debug还是用的ptvsd吗?
2,mspyls的缓存数据,和vscode是可以公用吗?