VS Code python设置第三方包的智能感知      

         因为使用Pyside6框架写Python程序,而QT自己的Qt Creator 在使用方面确实不如VScode轻便,故而使用VScode写Pyside6程序。但是VScode对于python第三方库(特别是通过pip安装的第三方库)在智能感知提示方面,老是找不到库文件。

        经过一番全网搜索,发现都无法彻底解决问题。最终在快要崩溃时发现是VScode自动安装的Pylance插件惹的祸,之前听说过这个货N多毛病,今天算是见识了。

        但是呢,Pylance毕竟是微软全力支持的python产品。心有不甘,最后在不懈的努力下,终于找到真正的问题所在。原来就是微软自己的系统路径带有特殊字符惹的祸。卸载重新安装python后完美解决Pylance不能智能感知提示的问题。

VScode 对 python 第三方库自动补全、智能提示的通用设置

 

 我的VScode Settings.json配置文件(我剔除了多余的其他配置项):

{
    "editor.fontSize": 22,
    "editor.formatOnPaste": true,
    "editor.formatOnSave": true,
    "window.zoomLevel": 0,
    "python.autoComplete.extraPaths": [
        
        "C:/Users/Administrator.SC-202011032309/AppData/Local/Programs/Python/Python39/python39.zip",
        "C:/Users/Administrator.SC-202011032309/AppData/Local/Programs/Python/Python39/DLLs",
        "C:/Users/Administrator.SC-202011032309/AppData/Local/Programs/Python/Python39/lib",
        "C:/Users/Administrator.SC-202011032309/AppData/Local/Programs/Python/Python39",
        "C:/Users/Administrator.SC-202011032309/AppData/Roaming/Python/Python39/site-packages",
        "C:/Users/Administrator.SC-202011032309/AppData/Local/Programs/Python/Python39/lib/site-packages",
        "C:/Users/Administrator.SC-202011032309/AppData/Local/Programs/Python/Python39/Scripts",
    ],
    "python.analysis.extraPaths": [
        "C:/Users/Administrator.SC-202011032309/AppData/Local/Programs/Python/Python39/python39.zip",
        "C:/Users/Administrator.SC-202011032309/AppData/Local/Programs/Python/Python39/DLLs",
        "C:/Users/Administrator.SC-202011032309/AppData/Local/Programs/Python/Python39/lib",
        "C:/Users/Administrator.SC-202011032309/AppData/Local/Programs/Python/Python39",
        "C:/Users/Administrator.SC-202011032309/AppData/Roaming/Python/Python39/site-packages",
        "C:/Users/Administrator.SC-202011032309/AppData/Local/Programs/Python/Python39/lib/site-packages"
    ],
}

 通过这样配置,其实重启VScode后,第三方库的智能感知就能正常使用了。

        这也是全网的标准设置方法,可是呢,大多数给的教程到此就结束了。很多朋友按照这个方法设置后,往往还是无法正常智能感知提示。最根本的原因是VScode自动安装了一个微软自己开发的Python插件:Pylance。就是Pylance插件阻碍了智能感知提示功能。

这是Pylance的资料:

微软宣布推出一种新的 Python 语言服务器,名为 Pylance,其可利用语言服务器协议与 VS Code 进行通信。Pylance 这个名字是对 Monty Python 的 Lancelot 的致敬,Lancelot 是亚瑟王和圆桌骑士中的第一位勇士。

Visual Studio Python 语言服务器和 Python 程序经理 Savannah Ostrowski 表示,Pylance 现在作为 Visual Studio Marketplace 的扩展提供,它“极大地改善了 Visual Studio Code 中的 Python 体验。“

        其实Pylance还是挺好的,虽然很多朋友说它很慢。但,现在因为它阻碍了第三方库的智能提示,我必须把它给干掉。直接把Pylance卸载了或是禁用,重启后,第三方库的智能感知就可以正常使用了。     

不想卸载,通过配置Pylance来使第三方库智能感知提示生效

【重要】:

一、通过分析发现并不是Pylance的问题。而是python安装时使用了windows系统默认安装路径。因为windows路径包含特殊字符,所以Pylance无法正确解析库路径。

二、网上有一篇文章通过设置项把VScode for python的默认服务器更换成其他语言服务器,这样的操作和禁用、卸载没什么区别。

三、正确的使用方法应该是,重新安装python,在安装python时选择手动模式。把python的安装路径改成自定义。在文件路径里尽量不要有汉字或是特殊标点符号。而后按照上面的设置就完美解决了Pylance无法解析第三方库的问题。

四、想使用VScode写python,还是老老实实使用Pylance,毕竟它是微软大力支持的产品。

最后我的VScode配置文件settings.json变成了这样:

{
    "editor.fontSize": 22,
    "editor.formatOnPaste": true,
    "editor.formatOnSave": true,
    "window.zoomLevel": 0,
    // 默认Python语言服务器使用:Pylance
    "python.languageServer": "Pylance",
    "python.autoComplete.extraPaths": [
        "D:/Python/python39.zip",
        "D:/Python/DLLs",
        "D:/Python/lib",
        "D:/Python",
        "D:/Python/lib/site-packages",
        "D:/Python/Scripts",
    ],
    "python.analysis.extraPaths": [
        "D:/Python/python39.zip",
        "D:/Python/DLLs",
        "D:/Python/lib",
        "D:/Python",
        "D:/Python/lib/site-packages",
        "D:/Python/Scripts",
    ],
}

在使用Pylance语言服务器下正常感知提示:


【OVER】

  

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐