我正在使用python 3.7.3在VSCode中构建代码。
文件夹结构:
project
├── main.py
└── modules
├── __init__.py
├── foo.py
└── boo.py
在foo.py中:
import boo
boo.printBoo()
当我运行foo.py时,它可以工作。我可以得到预期的结果。
This is boo
但是VSCode弹出:
无法导入'boo'pylint(导入错误)
尽管代码有效,但有没有办法摆脱pylint(import-error)
?
我试图将import语句更改为
from ..modules import boo as Boo
错误:在没有已知父包的情况下尝试相对导入
和
import modules.boo as Boo
错误:没有名为“模块”的模块
是什么问题,是pylint的问题,还是我误用了导入?
答案 0 :(得分:6)
遇到了完全相同的问题,两个文件共存于同一子文件夹中,执行得很好,但在VSCode中得到了pylint(import-error)
。
对我来说,解决方案是在<projectroot>/.vscode/settings.json
中添加了以下文本:
{
"python.linting.pylintArgs": [
"--init-hook",
"import sys; sys.path.insert(0, './modules')"
]
}
除了项目根文件夹
,其中将相关的“模块”子文件夹添加到 pylint 所要查找的路径中。答案 1 :(得分:2)
在Python 3中import boo
从foo
开始工作的唯一方法是直接运行foo.py
。如果是这种情况,则需要让VS Code打开modules
目录,而不要打开project
。
如果要打开project
,则将导入更改为from . import boo
,然后可以执行python3 -m modules.foo
。