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

lsp-python-ms默认用的好像是系统的python2,好像没看到参数可以改诶

1 个赞

同样遇到这个问题,lsp-ui 一直在报 require 3.x 的错误。

lsp-python-ms.el 里面是 executable-find python 的,那里面改成 python3 就是这样的。

为什么会对py help的临时文件选择这个呢

仔细检查Emacs里python的默认版本:(executable-find "python"). 这个还是你环境的问题。

晚上测试了下,用我上面那段代码,在Linux/Mac下可以自动下载mspyls,在Python2 和 Python3下都能正常工作。

mspyls 有个比较怪异的问题,不知道你这遇到没,第一次打开文件,补全什么的都很正常,但是如果操作一下, lsp-log 里面出现 Reloading modules… 之类的提示的话,有些 module 就找不到了,会报 unresolved import 的 warning, 同时相关补全也没有了。 我找了一个非常简单的测试代码。其中 sys 和 time 会有 unresolved import 的报错。敲 sys. 也得不到任何补全。

import sys
import time
import os

if len(sys.argv) <= 1:
    print(sys.argv[0] + ": " + " test")
    print(os.environ)
    print(time.time())

image image

我在macOS和Linux上没有遇到该问题。

遇到这个问题的不是你一个人。json,os等等一堆库都正常,偏偏math库提示unresolved import. 目前lsp在python上还是不如anaconda

个人感觉 lsp-python-ms 这个lsp client 在windows平台上的兼容性 非常差,所以导致了mspyls 的低效,甚至是bug

是不是某些module的路径找不到?试试lsp-python-ms-extra-paths

大佬能详细说说么?最近要写java, 折腾idea, 这个按键真是接受不了, 可定制性还极差, 还各种冲突,难搞啊

最新版应该可以通过 nuget list 命令从 https://pvsc.azureedge.net 获取。究竟 vscode 请求的完整地址是什么,要读一下源代码,或者加一些调试语句打印出来:

https://github.com/microsoft/vscode-python/blob/master/src/client/common/nuget/azureBlobStoreNugetRepository.ts

谢谢!在VSCode的message输出中找到地址了,但是最新的版本号无法自动获取(至少目前不知道方法)。现在是获取VSCode的扩展中的版本号写死到函数里的,也够用了。

我说的就是自动获取最新版本呀。

VSCode 先是请求 nupkg 源,得到下载列表,信息窗口应该能看到这句输出:

"Listing Nuget Packages"

取到列表之后,然后从中选取需要的下载链接。

我倒是想调试看看(列表是向哪个 URL 请求的,然后是否可以用 curl 模拟),但是不知道怎么配 VSCode,让它触发下载 mspyls。。。我现在一启动 VSCode,它自动选用了 pyls。

不是所有机器都安装了nuget啊,非Windows下更麻烦,这样有点得不偿失了。

最简单的办法,删除pyls试试。VSC默认用的是Jedi,必须disable。

可以通过 curl 模拟请求,得到列表,不需要 nuget。返回结果是 json 格式。

这个可以尝试,需要知道URL和API就行了。

我试了下简单的url叠加,没模拟出来。现在考虑,有一个方案是抓包。

wireshark 抓包也可以。