【问题标题】:VSCode mouse-hover on Python Keywords not workingVSCode 鼠标悬停在 Python 关键字上不起作用
【发布时间】:2021-04-15 08:33:11
【问题描述】:

在开始教朋友如何用 Python 编码时,我在他的 VSCode 中观察到一些与我自己不同的东西——他可以将鼠标悬停在 Python 关键字上,例如 importdef,然后将显示关键字的 Python 手册定义。我自己的 VSCode 不这样做。

我已经尝试了我能想到的一切来找出为什么这对我不起作用,我完全不知所措。我已经将我的安装过程与我朋友的进行了比较,按照我提供给他的完全相同的步骤设置他的环境,但没有得到相同的结果。我尝试从我的笔记本电脑中完全删除 Python、VSCode 和所有残留的 VSCode 文件,并按照他所做的相同顺序重新安装,但仍然无济于事。

我在工作时在另一台笔记本电脑上执行了相同的步骤,我可以让 MouseHover 在那里工作。我能想到的唯一可行的区别是我的工作机器没有使用与我的家用 PC 和笔记本电脑相同的 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 -m venv venv
  • 在资源管理器窗格中创建something.py
  • VSCode 应该检测到 venv 并提供加载它。说是
  • VScode 也可能表明pylint 没有安装,允许它安装,或者从venv 手动pip install pylint
  • 输入something.py 输出import random
  • 将鼠标悬停在import 上——这就是差异。在我的两台家用机器上,没有鼠标悬停任何东西。在我朋友的两台机器上,以及我在工作的机器上,显示如下:

【问题讨论】:

  • 我只有 ms-python 扩展,没有这个功能(Python 3.8)。他一定安装了一个额外的扩展。我看不出 2 个语言服务器(PyLance 和 Microsoft)有什么不同
  • Pylance 没有参与 - 他只安装了两个扩展,ms-python 和它强制的 jupyter notebooks 扩展。
  • 我应该补充一点,类和变量名之类的 MouseHover 可以正常工作。
  • @Rayanth -能否请您提供一个可以重现此问题的具体示例?
  • 我要问的部分原因是弄清楚可能有什么不同 - 我不知道如何重现它,当我们在 5 台机器上执行此操作时,3 台工作,2 台没有.我将编辑 OP 以添加我们遵循的步骤。

标签: python visual-studio-code vscode-settings


【解决方案1】:

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

  • 在 VSCode 中,加载 Python 文件后,切换到输出面板(与终端位于同一区域)并将下拉列表更改为 Python。
  • 滚动到此面板的顶部,然后检查您所属的实验组。
  • 大部分实验组不适用于此问题。
  • 专门查找pythonJediLSPpythonJediLSPcf 或如果 你两个都没有。

如果您遇到我描述的问题,那么在同一面板的底部,当您在启动 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.experiment
  • 在 Python 下> 实验:选择退出,单击 Edit in settings.json
  • "python.experiments.optOutFrom" 部分,添加"pythonJediLSPcf"(引用)
  • 如果不存在,添加另一个部分"python.experiments.optInto"
  • 在 OptInto 部分,添加 "pythonJediLSP"(引用)
  • 保存settings.json,重启VSCode。
  • Python 关键字上的鼠标悬停工具提示现在应该可以工作了。

用户不属于pythonJediLSPcfpythonJediLSP

  • 文件 > 首选项 > 设置
  • 在搜索设置中,开始输入python.experiment
  • 在 Python › Experiments: Opt Into,点击 Edit in settings.json
  • "python.experiments.optInto 部分,添加"pythonJediLSP"(引用)
  • 保存settings.json,重启VSCode。
  • Python 关键字上的鼠标悬停工具提示现在应该可以工作了。

用户属于pythonJediLSP:

  • 根据我的经验,这是使该功能正常工作所需的实验。如果你已经启用了这个实验,那么确保你没有pythonJediLSPcf。如果这样做,请按照第一个子标题中的说明禁用它。如果它仍然不起作用,那么可能还有另一个我自己没有经历过的冲突。

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

【讨论】:

    猜你喜欢
    • 2015-04-04
    • 2015-08-08
    • 2017-02-07
    • 1970-01-01
    • 2023-03-12
    • 2016-12-15
    • 1970-01-01
    • 1970-01-01
    • 2022-11-11
    相关资源
    最近更新 更多