VSCode鼠标悬停在Python关键字上不工作

VSCode鼠标悬停在Python关键字上不工作,python,visual-studio-code,vscode-settings,Python,Visual Studio Code,Vscode Settings,当我开始教一位朋友如何用Python编写代码时,我在他的VSCode中发现了一些与我不同的东西——他可以将鼠标悬停在Python关键字上,例如import或def,它将显示该关键字的Python手册定义。我自己的VSCode不这样做 我已经尝试了我能想到的一切,以找到为什么这对我不起作用,我完全不知所措。我将我的安装过程与我朋友的进行了比较,遵循了我为他提供的设置环境的完全相同的步骤,但没有得到相同的结果。我试着从我的笔记本电脑上完全删除Python、VSCode和所有剩余的VSCode文件,然

当我开始教一位朋友如何用Python编写代码时,我在他的VSCode中发现了一些与我不同的东西——他可以将鼠标悬停在Python关键字上,例如
import
def
,它将显示该关键字的Python手册定义。我自己的VSCode不这样做

我已经尝试了我能想到的一切,以找到为什么这对我不起作用,我完全不知所措。我将我的安装过程与我朋友的进行了比较,遵循了我为他提供的设置环境的完全相同的步骤,但没有得到相同的结果。我试着从我的笔记本电脑上完全删除Python、VSCode和所有剩余的VSCode文件,然后按照他所做的顺序重新安装,但仍然没有成功

我在工作时在另一台笔记本电脑上遵循同样的步骤,我可以让鼠标套在那里工作。我能想到的唯一可行的区别是,我的工作机器没有使用与我的家用电脑和笔记本电脑相同的Windows帐户,但我没有启用设置同步功能,所以我不明白这到底有什么关系

为了让这个功能在VSCode中为我自己正常工作,我忽略了什么?我并不特别需要它,但我希望在我教我的朋友时,能和他在同一个环境中

我们都在VSCode 1.55.2和Python 3.9.4上,使用从VSCode的Powershell终端创建的虚拟环境,然后重新启动VSCode以使其检测虚拟环境并将其用作终端的默认环境,最后安装pip并启用Pylint作为linter

编辑以添加后续步骤-在完全删除VisualStudio2019、代码和Python的所有痕迹后,我在家用笔记本电脑上再次完成了所有这些。注意:这是在Windows 10上,应用了所有更新

  • 安装VSCode
  • 安装VSCode Python扩展,MS版本
  • 安装Python 3.9.4
  • 在VSCode中打开一个新文件夹,然后打开终端
  • python-mvenv
  • 在浏览器窗格中创建
    something.py
  • VSCode应检测venv并提供加载。答应
  • VScode还可能指示未安装
    pylint
    ,允许其安装,或从venv手动安装
    pip pylint
  • something.py中
    键入
    import random
  • 将鼠标悬停在导入上,这就是差异。在我家的两台机器上,都没有鼠标盖。在我朋友的两台机器上,以及我的工作机器上,显示了以下内容:

在riov8对原始帖子评论的帮助下,我能够比较每种环境下有效的实验组

  • 在VSCode中,加载Python文件后,切换到输出面板(与终端位于同一区域),并将下拉列表更改为Python
  • 滚动到此面板顶部,检查您所属的实验组
  • 大多数实验组不适用于这个问题
  • 专门查找
    pythonJediLSP
    pythonJediLSPcf
    或者如果 你两个都没有
如果您遇到了我描述的问题,那么在同一面板的底部,当您在启动VSCode后第一次将鼠标悬停在python关键字上时,您将得到类似以下的错误:

Error 2021-04-16 15:33:40: stderr jediProxy Error (stderr) %UserProfile%\.vscode\extensions\ms-python.python-2021.3.680753044\pythonFiles\completion.py:598: DeprecationWarning: Providing the line is now done in the functions themselves like `Script(...).complete(line, column)`
  sys_path=sys.path,
%UserProfile%\.vscode\extensions\ms-python.python-2021.3.680753044\pythonFiles\completion.py:598: DeprecationWarning: Providing the column is now done in the functions themselves like `Script(...).complete(line, column)`
  sys_path=sys.path,

Error 2021-04-16 15:33:40: stderr jediProxy Error (stderr) %UserProfile%\.vscode\extensions\ms-python.python-2021.3.680753044\pythonFiles\completion.py:598: DeprecationWarning: Deprecated since version 0.17.0. Use the project API instead, which means Script(project=Project(dir, sys_path=sys_path)) instead.
  sys_path=sys.path,

Error 2021-04-16 15:33:40: stderr jediProxy Error (stderr) %UserProfile%\.vscode\extensions\ms-python.python-2021.3.680753044\pythonFiles\completion.py:626: DeprecationWarning: Deprecated since version 0.16.0. Use Script(...).infer instead.
  script.goto_definitions(), request["id"]
以下场景为我解决了问题:

用户属于实验组
pythonJediLSPcf
  • 文件>首选项>设置
  • 在搜索设置中,开始键入
    python.experience
  • 在Python>Experiments:Opt Out From下,单击设置中的编辑。json
  • 在“python.experiments.optOutFrom”一节中,添加
    “pythonJediLSPcf”
    (引用)
  • 如果不存在,请添加另一节“python.experiments.optInto”
  • 在选项部分,添加
    “pythonJediLSP”
    (引用)
  • 保存settings.json,然后重新启动VSCode
  • Python关键字上的鼠标悬停工具提示现在应该可以工作了
用户不属于
pythonJediLSPcf
pythonJediLSP
  • 文件>首选项>设置
  • 在搜索设置中,开始键入
    python.experience
  • 在Python›实验:选择进入下,单击设置中的编辑。json
  • “python.experiments.optin”部分中,添加
    “pythonjedlsp”
    (引用)
  • 保存settings.json,然后重新启动VSCode
  • Python关键字上的鼠标悬停工具提示现在应该可以工作了
用户属于
pythonJediLSP
  • 根据我的经验,这是该功能正常工作所需的实验。如果您已经启用了该实验,那么请确保您没有
    pythonJediLSPcf
    。如果有,请按照第一个子标题中的说明禁用它。如果它继续不起作用,则可能存在另一个冲突这是我自己没有经历过的

我正在发布一个关于此问题的GitHub问题,并将在完成后使用链接更新此答案。

我只有ms python扩展,没有此功能(python 3.8)。他一定安装了其他扩展。我看不出这两个语言服务器(PyLance和Microsoft)有什么不同Pylance没有参与进来——他只安装了两个扩展,ms python和它强制的jupyter笔记本扩展。我应该补充一点,类和变量名之类的东西上的鼠标悬停确实能正常工作。@Rayanth-你能给我们提供一个具体的例子来重现这个问题吗?我想说明的部分原因是找出可能的不同之处-我不知道如何复制它,当我们在5台机器上执行此操作时,3台工作,2台不工作。我将编辑OP以添加以下步骤