Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用当前文件夹中的模块进行VScode Python未解析导入_Python_Visual Studio Code - Fatal编程技术网

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

使用当前文件夹中的模块进行VScode Python未解析导入,python,visual-studio-code,Python,Visual Studio Code,我正在从某个project/文件夹运行vscode,在某个project/impl/文件夹中得到一个“未解决的导入”错误。在impl/文件夹中,我有两个Python文件: #lib.py 类别A(): 通过 #run.py 从lib导入一个#vscode错误-未解析导入 ... 当运行run.py时,Python解释器发现lib很好,但是vscode显示了一个“未解决的导入”错误() 如果我将import行从.lib import import implementation更改为(注意点),

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

#lib.py
类别A():
通过
#run.py
从lib导入一个#vscode错误-未解析导入
...
当运行
run.py
时,Python解释器发现
lib
很好,但是vscode显示了一个“未解决的导入”错误()

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


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

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

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

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

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

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

请注意在每个新路径中使用新的自然数代替n。

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

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

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

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

我的环境:

VSCode版本:1.48.2(用户设置)

操作系统:Windows\u NT x64 10.0.18362

Python扩展:2020.8.106424

settings.json中的languageServer

 "python.languageServer": "Pylance",
"python.analysis.disabled": [
      "unresolved-import"
  ]
更新1:

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

“python.languageServer”:“Jedi”,

更新2:

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


通过这种方式,我们可以使用
“python.languageServer”:“Microsoft”

vscode下划线确实是我的问题(这对调试和导航也有影响)。否则代码运行正常。“lib.py”文件和“run.py”文件的父文件都是“impl”文件夹吗?在我根据当前提供的信息运行它之后,就可以导入和使用它了,那么您能为我们提供一个完整的文件目录结构吗?要从某个文件夹中复制-运行vscode,请创建一个子文件夹并在子文件夹中创建两个文件。我添加了一个。一旦您有了一个带有子目录的项目,最好创建一个(本地)python包。@Wups您能进一步解释一下吗?我正在运行最新版本的python扩展,问题仍然存在。Pylance扩展确实解决了这个问题,尽管我需要测试它在安装时带来的其他更改。@gilad我更新了我的答案,您可以尝试参考它。此外,“Pylance”是Microsoft开发的一个扩展,可以与python扩展一起使用,并提供高性能语言支持。您可以参考它:Jedi似乎正确地解决了导入问题,但每当我更改为Jedi时,vscode都会尝试恢复到Microsoft语言服务器。我希望我可以配置Microsoft语言服务器来解决这些导入问题。@gilad根据您的描述,我在回答中添加了“Update2”,您可以参考它。谢谢,但问题不是下划线警告。当语言服务器无法解析导入时,它也会在调试过程中跳过相关行,并拒绝对导入文件中定义的函数和类“转到定义-F12”。