使用 VSCode 在同一文件夹中导入模块时出现“pylint(导入错误)”

rea*_*een 12 python pylint python-import python-3.x visual-studio-code

我正在使用 python 3.7.3 在 VSCode 中构建我的代码。

文件夹结构:

project 
??? main.py
??? modules
    ??? __init__.py
    ??? foo.py
    ??? boo.py
Run Code Online (Sandbox Code Playgroud)

在 foo.py 中:

import boo
boo.printBoo()
Run Code Online (Sandbox Code Playgroud)

当我运行 foo.py 时它起作用了。我可以得到我期望的结果。

This is boo

但是 VSCode 弹出:

无法导入 'boo' pylint(导入错误)

虽然代码有效,但有没有办法摆脱pylint(import-error)


我试图将导入语句更改为

project 
??? main.py
??? modules
    ??? __init__.py
    ??? foo.py
    ??? boo.py
Run Code Online (Sandbox Code Playgroud)

错误:尝试在没有已知父包的情况下进行相对导入

import boo
boo.printBoo()
Run Code Online (Sandbox Code Playgroud)

错误:没有名为“模块”的模块

有什么问题,是pylint的问题还是我误用了导入?

Dan*_* TZ 11

有完全相同的问题,两个文件共存于同一pylint(import-error)个子文件夹中,执行得很好,但在 VSCode 中得到了一个。

我的解决方案是将以下文本添加到<projectroot>/.vscode/settings.json

{
    "python.linting.pylintArgs": [
        "--init-hook",
        "import sys; sys.path.insert(0, './modules')"
    ]
}
Run Code Online (Sandbox Code Playgroud)

除了项目根文件夹之外,它将相关的“模块”子文件夹添加到pylint将要查看的路径中


Bre*_*non 3

import boo在 Python 3 中工作的唯一方法foo是直接运行foo.py。如果是这种情况,那么您需要让 VS Code 打开您的modules目录,而不是project.

如果你想打开的话project,把import改成from . import boo然后就可以了python3 -m modules.foo