使用 VisualStudio+ Python——如何处理“覆盖 stdlib 模块”Pylance(reportShadowedImports) 警告?

Gar*_*ett 14 python visual-studio conda pylance

在 VS Code 中运行 ipynbs 时,我开始注意到 Pylance 对标准库导入的警告。我正在使用 conda 虚拟环境,我相信警告与此相关。使用 glob 库的示例如下:

"env\Lib\glob.py" is overriding the stdlib "glob" modulePylance(reportShadowedImports)

到目前为止,我的笔记本按预期运行,但我很好奇这个警告是否表明布局不佳,或者只是说明明显的“仅供参考,您没有使用 python 的基本安装”。

我已经关闭了 linting,但问题仍然存在。我对错误“reportShadowedImports”的搜索几乎没有返回任何结果。

Wha*_*ame 30

搜索没有结果的原因是这个检查是最近才实现的(参见Github)。我遇到了和你一样的问题,因为code.pyMicropython/Circuitpython 也覆盖了 stdlib 中的模块“代码”。

解决方案很简单,尽管您随后会放松此特定检查。只需添加reportShadowedImports到您的pyright config即可。对于 VS Code,将其添加到.vscode/settings.json

{
  "python.languageServer": "Pylance",
  [...]
  "python.analysis.diagnosticSeverityOverrides": {
      "reportShadowedImports": "none"
  },
  [...]
}
Run Code Online (Sandbox Code Playgroud)

  • 一个更简单的解决方案是将“code.py”重命名为“main.py”,这样就不会发生冲突。它仍然会在启动时加载。禁用所有覆盖警告会产生删除有用警告的不良副作用。 (7认同)
  • 这似乎与 conda env 的想法相冲突。似乎当我使用 conda env 及其包时,不应该报告任何错误。有没有办法让 pylance 将 stdlib 视为正在使用的 conda 环境中的标准库? (3认同)

小智 8

如果你的文件名与 stdlib python 模块同名——例如“datetime.py”——就会出现这个问题。

最好避免将文件命名为与 stdlib 模块相同的名称,因此在这种情况下,最好的操作是选择不同的名称。