VSCode/Pylint在同一目录中找不到模块

4
我有以下目录结构:
.
├── Pipfile
├── Pipfile.lock
└── src
    ├── config.py
    ├── __init__.py
    └── main.py

config.py 的内容如下:

FOO = 'bar'

main.py的内容如下:

import config

print(config.FOO)

__init__.py是空的。

如果按照上述设置,使用VSCode\Pylint时会报config没有FOO成员的警告。

如果删除__init__.py,则警告消失了。

为什么会发生这种情况,如何正确地解决这个问题?

1个回答

3
这是因为import config是一个绝对导入,这意味着Python试图将config作为顶级包或模块来查找。但是当你有一个__init__.py文件时,你会使src/目录成为一个包,这样Python就会将src/config.py视为src.config而不是config。当你删除__init__.py时,VS Code的Python扩展会假设你希望将src/目录仅视为存放代码的文件夹,因此会进行额外的工作,使Python从src/而不是你的工作区顶部运行。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接