我具有以下目录结构:
.
├── 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 has no FOO member
。
如果我删除__init__.py
,警告消失。
为什么会这样?解决此问题的正确方法是什么?
答案 0 :(得分:0)
之所以会这样,是因为import config
是绝对导入,这意味着Python试图将config
作为顶级包或模块来查找。但是,当您拥有一个__init__.py
文件时,会将您的src/
目录设置为一个包,以便Python将src/config.py
视为config
而不是src.config
。删除__init__.py
时,VS Code的Python扩展假定您希望将src/
目录仅视为保留代码的文件夹,从而进行了额外的工作,因此Python从{{1 }},而不是工作区的顶部。