使用当前文件夹中的模块进行 VScode Python 未解析导入

gil*_*lad 2 python visual-studio-code

我正在从某个project/文件夹运行 vscode 并在某个文件夹中收到“未解析的导入”错误project/impl/。在impl/文件夹中,我有 2 个 Python 文件:

# lib.py
class A():
    pass

Run Code Online (Sandbox Code Playgroud)
# run.py
from lib import A # vscode error here - unresolved import
...
Run Code Online (Sandbox Code Playgroud)

运行run.pyPython 解释器时发现lib很好,但 vscode 显示“未解析的导入”错误(截图)。

如果我将导入行更改为from .lib import implementation(注意点),我会得到相反的行为,其中 vscode 可以很好地解析导入但 Python 解释器失败。

我应该如何导入 lib 或以其他方式配置 vscode 以解决从本地文件夹导入的问题?(显然我不想将本地文件夹的确切路径添加到 vscode 配置文件中,因为我必须为项目中的每个子文件夹都这样做)

Jil*_*eng 6

当我在计算机中使用 python 扩展版本 2018.12.1 时,遇到了与您描述的相同的问题。

由于该功能由语言服务提供,而python语言服务由python扩展提供,建议您可以尝试使用最新版本的python扩展(2020.8.106424)。

另外,你可以使用扩展“ Pylance ”,它也为python提供了优秀的语言服务。

我在电脑上创建的项目:

在此处输入图片说明

我的环境:

VSCode 版本:1.48.2(用户设置)

操作系统:Windows_NT x64 10.0.18362

Python 扩展名:2020.8.106424

语言服务器settings.json

 "python.languageServer": "Pylance",
Run Code Online (Sandbox Code Playgroud)

更新1:

当我使用的语言服务是“ Jedi”时,代码也没有这个警告:

"python.languageServer": "Jedi",

更新2:

由于这个警告不影响代码的执行结果,我们也可以在设置( settings.json)中关闭这种警告:

"python.analysis.disabled": [
      "unresolved-import"
  ]
Run Code Online (Sandbox Code Playgroud)

这样,我们可以使用 "python.languageServer": "Microsoft",