在 Ubuntu 20.04 LTS 上使用 Python 3.x 在 VS Code 中导入“Path.to.own.script”无法解析 Pylance(reportMissingImports)

新手上路,请多包涵

这是我几个月前在 pylance 之前使用 pylint 时遇到的类似情况

我的 python 3.9x 脚本(在 --- VS Code Ubuntu 20.04 LTS )以自定义“工具”的以下导入开始:

 import sys
sys.path.append(
    '/home/andylu/Dokumente/Allgemeines_material/Sonstiges/Programming/Python/Scripts/'
)

import General.Misc.general_tools as tools

现在, Pylance 声明:

 Import "General.Misc.general_tools" could not be resolvedPylance (reportMissingImports)

即使在程序执行期间模块被完美导入,也会发生这种情况。

因此,为了确保制作 Pylance 理解这是一个现有的模块路径,除了 sys.path.append(..) 方法之外,我将以下内容添加到 settings.json -ed5a5-e文件:

 {
    ...
    // Possible values: "Jedi", "Pylance", "Microsoft", "None".
    "python.languageServer": "Pylance",
    // NOTE on changing from microsoft to pylance language server: python.autoComplete.extraPaths --> python.analysis.extraPaths
    // Docs: https://github.com/microsoft/pylance-release/blob/master/TROUBLESHOOTING.md#unresolved-import-warnings
    "python.analysis.extraPaths": [
        "/home/andylu/Dokumente/Allgemeines_material/Sonstiges/Programming/Python/Scripts"
    ],
    ...
}

然而,我仍然收到 reportMissingImports 消息,即使它已正确导入。

我在 这里 找到的解决方法效果很好(将 # type: ignore 附加到导入语句):

 import General.Misc.general_tools as tools  # type: ignore

尽管如此,这只是一种解决方法,这就是为什么我希望解决此问题的根源。从技术上讲,这与我之前使用 的相同解决方法 来消除来自 pylint 的类似警告消息。可能是 VS-Code settings.json 配置所固有的东西,因为使用 VS-Code 是这里的常数因子。


编辑未解决问题的其他措施:

我加了

export PYTHONPATH="$PYTHONPATH:/home/andylu/Dokumente/Allgemeines_material/Sonstiges/Programming/Python/Scripts"

到我的 ~/.bashrc 文件,这使我现在可以直接从终端的 python shell 中导入模块,而无需前面的 sys 操作。然而,这仅适用于全局系统 python 环境,而不适用于任何虚拟环境。为了在那里更改系统路径,我按照 这些说明 进行操作,而我的特定虚拟环境“scrapy_course”是打开的,如下所示:

 (scrapy_course) andylu@andylu-Lubuntu-PC:~/$ add2virtualenv /home/andylu/Dokumente/Allgemeines_material/Sonstiges/Programming/Python/Scripts

此命令适用于 virtualenvwrapper ,它与 pyenv 一起巧妙地管理虚拟环境。现在,即使没有 sys.path.append(...) 在导入模块之前,我也可以在当前环境中运行上述脚本,YET pylance 仍然无法正确识别路径并向我显示相同的警告和以前一样。


编辑 "python.analysis.useImportHeuristic": true

我在我的全局 settings.json 文件中不断激活此选项,但我仍然没有发现任何影响。一旦这种情况发生变化,或者最终出现(不同的)解决方案,我会及时通知您。


编辑抑制/禁用 Pylance ‘reportMissingImports’ linting 消息:

我已经找到了 如何完全抑制特定的 Pylance-linting-message ,如果您有兴趣将其作为解决方法的话。特别是在我现在的情况下,无论如何我都需要 并行 使用 pylint ,所以我根本不依赖Pylance的linter。

原文由 Andreas L. 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2k
1 个回答

默认情况下,Pylance 包含您的工作区的根路径。如果要包含其他子目录作为导入解析路径,可以使用工作区的 python.analysis.extraPaths 设置来添加它们。

  • 在 VS Code 中按 <ctrl> + <,> 打开设置。
  • 输入 python.analysis.extraPaths
  • 选择“添加项目”
  • 输入库的路径 /home/andylu/Dokumente/Allgemeines_material/Sonstiges/Programming/Python/Scripts/

原文由 Ryan 发布,翻译遵循 CC BY-SA 4.0 许可协议