Visual Studio Code:Intellisense无法工作

109

我的Visual Studio Code的智能感知没有正常工作。每次我尝试使用 Ctrl + Shift 时,它只显示一个加载消息。我正在使用Python(带有Django)并已安装了ms-python.python。 我还安装了Djaneiro。但是它仍然无法正常工作。 enter image description here

这里似乎存在什么问题?


相关链接:https://github.com/Microsoft/vscode-python/issues/423 - sshashank124
看起来你正在使用Python 3.7,请确认一下? 这个扩展还不支持那个版本。 - vijesh
我正在使用 Python 3.6。 - Donovan Keating
1
对我来说,大多数时间都能正常工作。但是随着我的文件变得越来越大(大约500行以上),速度变得非常慢,有时可能需要超过一分钟才能显示建议。因此,我尝试保持我的视图和模型较小,但这并不总是可能的 :( - Vaibhav Vishal
你能否更明确地提出问题?你的问题是关于你自己的软件包还是像pytorch、tensorflow、numpy等其他人的软件包? - Charlie Parker
显示剩余2条评论
34个回答

76

这可能由许多原因引起,以下是其中一些原因:

  1. 在VSCode中Python可执行文件的路径不正确

    • 解决方案:在settings.json中配置Python可执行文件的路径。记得在配置完成后重新启动VSCode。
  2. 模块位于非标准位置

    • 解决方案:在settings.json中配置该位置以使自动补全功能正常工作。以下是一个(适用于Linux的)示例,用于为工作区添加自定义模块:
    • {
        "python.pythonPath": "/usr/bin/python",
        "python.autoComplete.extraPaths": [
          "${workspaceFolder}/customModule"
        ]
      }
      
  3. vscode未从活动虚拟环境中启动

    • 解决方案:模块路径在激活虚拟环境时设置。请在已激活正确虚拟环境的终端上启动vscode。

2
我发现 extraPaths 可以识别一个根路径下的多个模块,例如 "${workspaceFolder}/libraries" - Kyle Delaney
1
extraPaths 正是解决我的问题的关键。 - Dmitry Kankalovich
4
您的回答目前不够具体,无法采取行动。例如,我该如何执行您的第一个建议,即“VS Code中的Python可执行路径不正确”? - Charlie Parker
2
"python.autoComplete.extraPaths" 对我很有帮助! - Joshua Schlichting
1
#1 对我有用。我正在使用pyenv,所以我必须按CTRL+SHIFT+P> Python:选择解释器> Python 3.8.2 64位('3.8.2':pyenv)并重新启动VSCode。如果您像我一样在WSL上,您需要从命令行执行wsl --shutdown。非常好用。 - Meir Gabay
显示剩余3条评论

61
安装 Pylance 插件导致 Vscode 智能提示停止工作。
禁用 Pylance 并启用 Default Microsoft Python extension,以及 Visual Studio IntelliCode(Microsoft),并恢复到 Jedi server(由 Vscode 提示) ,重新启动智能提示检测。

2
对我来说情况恰好相反,我必须使用 pylance 才能让它正常工作。当时我还在使用 Remote - SSH 包,不确定是否与此有关。 - powersource97
5
我用了这个方法!谢谢! - Hoa Nguyen
2
我有跟@powersource97完全相反的经历。在使用远程SSH时,我必须禁用Pylance才能使其正常工作。‍♂️ - PCoelho
3
非常感谢。我刚刚从VSCode中卸载了Pylance插件。 - nmdaz
1
谢谢这个提示!在与VS Code智能感知的长时间挣扎后,禁用Pylance扩展(它是自动安装/捆绑在MS Python扩展中的)然后重新启动VS Code也为我解决了这个问题。 - stephinity

15

如果你已经尝试了一切,但仍然无法解决问题,就像在我的情况下安装 Visual Studio IntelliCode 扩展与Python扩展一起使用。


这个是否适用于我自己的开发模式下的库呢?(例如使用 conda develop .pip -e . - Charlie Parker

10

首先,如果你已经在你的项目中安装了virtualenv,请从那里运行vscode。然后在你的vscode设置中,也就是settings.json中,你可以按照我的配置或者查找出问题所在。大多数情况下,这个问题源于在pythonPath设置中放置了不正确的路径。

    {
  "python.pythonPath": "${workspaceFolder}/env/bin/python3",
  "editor.formatOnSave": true,
  "python.linting.pep8Enabled": true,
  "python.linting.pylintPath": "pylint",
  "python.linting.pylintArgs": ["--load-plugins", "pylint_django"],
  "python.linting.pylintEnabled": true,
  "python.linting.pep8Args": ["--ignore=E501"],
  "files.exclude": {
    "**/*.pyc": true
  }
}

更新:

如果你想要一个我个人使用的,针对Django和React Web应用程序开发的优化配置Vscode,你可以查看这里


我刚刚在settings.json文件中调整了所有包含“python”的行,然后出现了一个错误提示要求我重新加载vscode,然后问题就解决了!谢谢 :) - aderchox
我不明白,如果我已经有了一个Python路径包含了所有的包,为什么你还需要手动设置呢? - Charlie Parker
因为你可能在虚拟环境中,所以 Python 可执行文件的路径与你实际想要使用的路径不同。 - Ehsan Ahmadi

7
在我的情况下,解决问题的方法是重新安装vscode上的Python扩展,这会自动安装Pylance。然后按下"ctrl + , "打开vscode设置,键入Pylance,点击编辑setting.json,将"python.languageServer"更改为默认值。
  },
"terminal.integrated.sendKeybindingsToShell": true,
"python.defaultInterpreterPath": "C:source\\env\\Scripts\\python.exe",
"python.disableInstallationCheck": true,
"terminal.integrated.defaultProfile.windows": "Command Prompt",
**"python.languageServer": "Default"**,
"python.analysis.completeFunctionParens": true,
"[jsonc]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
},
"python.autoComplete.addBrackets": true,
"diffEditor.ignoreTrimWhitespace": false

希望这对你也有用,否则你可以尝试重新安装Intellicode和Python扩展,然后重新启动VSCode。

希望你觉得这很有用:)


6
我将其翻译成中文:

我更改了 :jedi 的值,从 true 改为 false,或者从 false 改为 true,在重新加载 VSCode 时,这是可以的。

我的设置:

{
    "editor.fontSize": 16,
    "explorer.confirmDragAndDrop": false,
    "extensions.autoUpdate": false,
    "workbench.colorTheme": "Default Dark+",
    "editor.fontFamily": "Consolas, Dengxian",
    "workbench.sideBar.location": "left",
    "workbench.startupEditor": "newUntitledFile",
    "workbench.iconTheme": "material-icon-theme",
    "python.pythonPath": "d:\\Source\\Django\\Scripts\\python.exe",
    "python.linting.pylintEnabled": true,
    "python.linting.enabled": true,
    "git.ignoreLimitWarning": true,
    "python.jediEnabled": true,
    "python.autoComplete.extraPaths": [
        "d:\\Source\\Django\\",
    ],
    "python.autoComplete.addBrackets": true
}

在VSCode 1.43.2 / Ubuntu 18.04的VirtualBox中,我使用了以下方法解决了类似的问题。我将jediEnabled设置为false来禁用Jedi。在我的情况下,微软的自动完成似乎比Jedi更有效。 - Joël Esponde
在OSX中,更改Jedi值实际上触发了重新下载Microsoft Python扩展并重新开始工作。耶! - pmourelle
我不明白,如果我已经有一个包含所有Python路径的路径,为什么还需要手动设置呢? - Charlie Parker

5
警告:原始问题是几年前提出的。在此期间发生了很多变化,包括删除了旧的MPLS语言服务器,Pylance已经上线(但Jedi仍然是默认选项),自2021年中期以来,Pylance成为默认选项。如果您遇到问题,请在遵循给定建议之前检查回复的日期;可能已经过时。 OP的问题几乎肯定与已经消失的MPLS有关。 如果您在使用Pylance时遇到问题,请考虑在https://github.com/microsoft/pylance-release上提出问题。

5

当我在处理Python文件时,智能感知功能会随机停止工作。

我只需保存文件,关闭文件标签,然后重新打开文件,它就可以正常工作。

有时这种方法不起作用,所以我只需重启VS Code,然后智能感知功能又可以正常使用了。


5

我之前也遇到过同样的问题,但是经过一番搜索,我发现了这个扩展:Pylance,它解决了我的问题。


3
对我来说,解决问题的方法是重新安装默认的Python扩展,并将设置中的python语言服务器设置为Default
步骤:
1. 同时按下CTRL/CMD + Shift + P打开命令窗口。现在搜索install extensions。 2. 选择Python并安装它(如果已经安装,请先卸载)。 3. Python是VSCode中的默认Python扩展,它默认安装了Pylance。 4. 再次打开命令窗口,这次搜索Settings。选择Prefernces: Open settings (JSON)。 5. 在JSON文件中搜索(CTRL/CMD + Fpython.languageServer,将值设置为DefaultPylance,因为默认情况下是Pylance(我的某些设置不知道为什么被设置为None!)。 6. 保存文件后,会提示您是否要重新加载vscode以使更改生效,单击Yes! 7. 完成,IntelliSense现在应该使用Pylance工作!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接