有关 VSCODE 使用微软 LSP 时, 相对引用的库无法正常 go to definition 的问题

2020-02-08 15:23:52 +08:00
 ClericPy
  1. 问题描述

win10, 最新版 vscode, Python3.7

from asyncio.base_events import tasks

代码如上, 从 base_events alt-click 跳转过去以后, 找到 37 行附近的

from . import constants
from . import coroutines
from . import events

这里再想跳转就失灵了

  1. 暂时解决方案

    进入 C:\Users\XX\AppData\Local\Microsoft\Python Language Server 目录, 删除那堆 pyi 文件, 重启 VSCODE

    可以正常跳转了, 因为没有缓存的情况下, 可以正常跳转, 应该是缓存的问题

  2. 尝试失败方案

    确定是 LSP 的缓存问题, 所以尝试修改了 "python.analysis.cachingLevel": "None", 重启发现依然创建了缓存文件

请教到底怎么处理这个情况啊... 目标就是让我正常跳转到定义, 实在不行我就给文件夹禁止写入了. github 之类的地方搜了很多, 但基本都不是这个情况

以及, 不要回帖推荐 Pycharm 什么的, 我知道 Pycharm 是正常的, 甚至把 LSP 关了用 jedi 也是正常跳转.......

3048 次点击
所在节点    Visual Studio Code
8 条回复
ClericPy
2020-02-08 15:39:14 +08:00
重新试了下... 好像和缓存没关系
好像是保持那个想跳转的 py 文件打开状态的话, 重启下就可以正常跳转了

比如 从 from asyncio.base_events 跳转打开了 base_events.py 文件, 这时候没法继续跳转 from . import coroutines

但如果不关闭 base_events.py 文件, Reload 下, 就可以跳转了...
gitopen
2020-02-08 18:51:43 +08:00
@ClericPy #1 我也遇到了这个问题,所以这几天切回到 pycharm 了。。借楼问,vscode 的代码提示,光标移动到某个函数,提示框一直显示 loading.... 遇到过这个问题吗
ClericPy
2020-02-08 19:01:02 +08:00
@gitopen #2 切换到 jedi 如果还 loading 那就还是 LSP 的问题. 我这边不能跳转的显示的是 Code analysis is in progress..., 实际已经停止了, 就启动时候分析了一次, 新打开的非工作区文件都不会再分析

我在找有什么办法能强制启动一次 LSP 的 analysis, 现在 diagnosticPublishDelay 参数貌似不能让它检查到什么自己启动
chaleaoch
2020-08-30 21:59:22 +08:00
但是我还是有这个问题用的 pylance...
ClericPy
2020-08-30 22:04:27 +08:00
@chaleaoch pylance 刚出我就试用了... 也是跳转 pyi, 看了官方 issues, 貌似就是这么设计的... 没找到好办法跳转到原 py 文件...
至于官方 lsp 的跳转, 我删了 pyi 文件就跳过去了... 你有什么好办法推荐下么
chaleaoch
2020-08-30 23:19:26 +08:00
@ClericPy 我的只有 pylance 工作,其他两种都不工作...
ClericPy
2020-09-01 23:25:22 +08:00
@chaleaoch 太久了, 就算当时 watch 了, 后来估计也取关了...

PS: 刚才在电脑上把 3.7 换到 3.8, 微软 LSP 下载太慢, 所以换了 pylance, 意外发现居然不是 pyi 了... 不知道什么情况
chaleaoch
2020-09-02 12:37:36 +08:00
@ClericPy pylance import csv 这种非相对导入的不好用.不信你试试.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/642994

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX