emacs-lsp:master
← smallzhan:master
opened 11:01AM - 28 Jun 19 UTC
1. Add a new variable `lsp-python-executable-cmd`, which can be used to select t… he python cmd used to communicate with ms-pyls.
2. Add some missing initial options such as `typeStubSearchPaths`, `asyncStartup`, and `analysisUpdates`. with `typeStubSearchPaths` set, ms-pyls can provide some more completions based on `typeshed`. The other options is added just to keep update with vscode.
3. Fix `searchPaths` issue #32 (need more test, my issue of `Reloading modules...` is gone for now.). According to vscode-python extensions, `searchPaths` is only used when `python.autoComplete.extraPaths` is set, or `PYTHONPATH` is set in system PATH. Thus, `pysyspath` is removed in `searchPaths`.
4. The `DataBasePath` setting is removed since it is not used since ms-pyls 0.2.92+. (https://github.com/microsoft/vscode-python/blob/master/src/client/activation/languageServer/analysisOptions.ts#L93)
主要如下
初始化选项向 vscode 的插件看齐,添加了 typeshed
路径以及其他的两个参数。ms-pyls 可以使用typeshed
的设置来提供更多的补全。例如如下代码:import collections
q = collections.deque()
q.
不使用 typeshed 的时候,q. 后面好像出不来补全,使用这个设置之后,会出现比较多的补全项。
添加了一个参数 lsp-python-executable-cmd
, 用来解决在 PATH 里面存在 python2
和 python3
, 并且 python
默认指向 python2
(例如 macos), 而平时使用都用 python3
的问题。
searchPaths
的参数修正,这个可能需要大家帮忙测试一下,主要解决的问题是 *lsp-log* 里面出现 Reloading modules...
之类的提示,导致有些内置包出现 unresolved import
的问题。查看 vscode 的插件后,发现这个变量不应该把系统的 sys.path 内容放进去,那个应该是 ms-pyls 自动查找的,只需要放进去 lsp-python-ms-extra-paths
的设置即可。我这样设置之后,没出现过上面的问题了。
6 个赞
想借机问一下,有人用 lsp 来写大型的工业级项目吗?我用 lsp 写公司的项目非常卡(代码量百万级),换回 PyCharm 了。
发现一个问题,增加"Typeshed"后出现以下错误导致lsp无法启动。环境是Emacs27+macOS
lsp--make-message: Wrong type argument: consp, nil
emm,目前看来,如果用lsp-python-ms,那么性能应该是跟vscode一样的。如果说慢的话,可能emacs27 native json的引入会加快很多吧。
额,跟你之前报的那个 bug 一样的问题,应该是 27 版本的 emacs, 对于这些参数,只认 vector, 不认 list. 我看看改下。
把新增的两个参数变成 vector 了。我拿 emacs27 测试了一下,应该没问题了。
committed 05:24PM - 28 Jun 19 UTC
1 个赞
麻烦能帮忙测试下tensorflow这个package吗?
我目前测试下来,在conda环境下安装的tensorflow,msplys直接用的是vscode编译好的,也用vscode打开了这个项目,看着进度条index完了。
奇怪的是vscode下jump to defiition over tensorflow是能精确跳转的,但是emacs下并不能。emacs用的是conda.el。报的错是lsp-request: Object reference not set to an instance of an object.
不知道你说的精确跳转是指什么。我简单测试了一下,没什么问题。不过我环境不是 conda, 直接 pip install tensorflow 的。
ztlevi
2019 年6 月 28 日 20:57
10
就是lsp-ui-peek-find-definitions
不work。
用了 Emacs 27 + json,速度确实有改善。
第二点应该加入到lsp-python-ms的readme中,我遇到这个问题了,找了挺久的答案
应该如何设置 lsp-python-ms-extra-paths 这个变量才能包含正在编辑的当前python文件下的模块呢?比如我有a.py b.py两个文件,并且b.py 中import a,但是lsp-python0-ms提示说 unresolved model a
看搜索路径也没有b.py所在的当前路径
The following clients were selected based on priority: (server-id mspyls, priority 1)
Analysis cache path: /home/lsl/.cache/Microsoft/Python Language Server
Microsoft Python Language Server version 0.4.127.0
Workspace root: /home/lsl/golang/src/api.u.xunlei.com
GetCurrentSearchPaths /usr/bin/python3
Interpreter search paths:
/usr/lib/python3.6
/usr/lib/python3.6/lib-dynload
/home/lsl/.local/lib/python3.6/site-packages
/usr/local/lib/python3.6/dist-packages
/usr/lib/python3/dist-packages
/usr/lib/python3.6/dist-packages
User search paths:
Initializing for /usr/bin/python3
Analysis caching mode: None.
Analyzing in background, 16 items left...
当前的配置是
(use-package lsp-python-ms
:ensure t
:custom
;; lsp-python-executable-cmd, 用来解决在 PATH 里面存在 python2 和 python3,
;; 并且 python 默认指向 python2(例如 macos), 而平时使用都用 python3 的问题。
(lsp-python-ms-python-executable-cmd "python3")
(lsp-python-ms-extra-paths (list "."))
:config
)
而且我发现如果使用默认的python2的话,不会有b.py 不能import a.py的情况,但是同时,也不能import python3中安装的requests等包。
OMG,你的需求真神奇!Python2 要 import Python3 中的包,好奇你的项目如何跑起来的
不是python2要import python3的包,我mint系统上python2和python3都安装了,而且我 平时开发都是用的python3,用pip3安装的包也都是python3下面的,如果配置要是
(use-package lsp-python-ms
:ensure t
:config
)
那么b.py import a.py是没有问题的,但是此时,如果import requests,就会提示unsolved import requests,因为此时lsp-python-ms是用的python2,而requests是安装在python3的目录下的。
但是如果我添加了
(lsp-python-ms-python-executable-cmd "python3")
问题正好相反:requests可以正常import,但是a.py不能import,有点奇怪。
我是希望每个脚本打开的时候可以自动将当前的目录添加到
lsp-python-ms-extra-paths 中,然后再连接ms 的python lsp
如果是下面这样的配置,其实也能用,但是我希望能够动态的设置lsp-python-ms-extra-paths
(use-package lsp-python-ms
:ensure t
:custom
;; lsp-python-executable-cmd, 用来解决在 PATH 里面存在 python2 和 python3,
;; 并且 python 默认指向 python2(例如 macos), 而平时使用都用 python3 的问题。
(lsp-python-ms-python-executable-cmd "python3")
(lsp-python-ms-extra-paths "path-to-a.py")
:config
)