VSCode Intellisense 显示错误的自动完成模块

VSCode Intellisense shows wrong autocomplete modules

我有几个结构相同的模块,VSCode Intellisense 似乎把它们混在一起了。

这是我的项目结构的一部分:

project
|-- daos
|   -- strategies
|      -- __init__.py
|      -- athena_strategy.py
|   -- __init__.py
|   -- db.py
|-- extractor
|   -- strategies
|      -- __init__.py
|      -- extractor_strategy.py
|   -- __init__.py
|   -- extractor.py

问题是,当我试图在 extractor.py 中导入 strategies 时,Intellisense 向我显示 athena_strategy 模块而不是 extractor_strategy

这是 settings.json 里面的文件 .vscode:

{
    "python.pythonPath": "/usr/bin/python3",
    "python.linting.pylintEnabled": true,
    "python.linting.enabled": true,
    "python.autoComplete.extraPaths": [
        "${workspaceFolder}/extractor",
        "${workspaceFolder}/daos",
        "${workspaceFolder}/ingester",
    ]
}

是否需要添加任何其他配置才能在导入中获得正确的模块?

在VS Code中使用python时,其“Intellisense”功能由“python”扩展和语言服务提供,不同语言服务显示的“自动完成”内容不同.

  1. 使用“绝地武士”时:(settings.json 中的"python.languageServer": "Jedi",

  2. 使用“Microsoft”或“Pylance”时:

    需要我们使用“from extractor.strategies.”,“自动完成”会显示我们需要的内容。另外,为了使代码可运行,请添加“import sys sys.path.append("./")”在“extractor.py”的开头。

另外,建议大家使用不同的文件名和文件夹名,这种良好的编程习惯可以避免很多问题。