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

2024-09-28 20:19:55 发布

您现在位置:Python中文网/ 问答频道 /正文

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

# lib.py
class A():
    pass

# run.py
from lib import A # vscode error here - unresolved import
...

当运行run.py时,Python解释器发现lib很好,但是vscode显示了一个“未解析的导入”错误(screenshot

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

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


Tags: 文件runfrompyimport路径project文件夹
2条回答

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

由于此函数由语言服务提供,而python语言服务由python扩展提供,因此建议您尝试使用最新版本的python扩展(2020.8.106424)

此外,还可以使用扩展“Pylance”,它还为python提供了出色的语言服务

我在计算机上创建的项目:

enter image description here

我的环境:

VSCode版本:1.48.2(用户设置)

操作系统:Windows\u NT x64 10.0.18362

Python扩展:2020.8.106424

{}中的languageServer:

 "python.languageServer": "Pylance",

更新1:

当我使用的语言服务为“Jedi”时,代码也没有以下警告:

"python.languageServer": "Jedi",

更新2:

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

"python.analysis.disabled": [
      "unresolved-import"
  ]

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

您可以使用sysmodule将文件夹添加到模块搜索python的路径中

import sys
sys.path.insert(1, "./impl/")

from lib import A

注意,vs代码仍然可以在导入行下划线,但是,当您运行程序时,它可以正常工作。试试看

您可以像这样添加更多路径-

sys.path.insert(n, <path to folder>)

对于每一条新路径,请注意使用新的自然数代替n

相关问题 更多 >