我在很多文件夹和子文件夹中运行脚本,结构有点困惑,但基本上是这样的:
src/
controllers/
__init__.py
a.py
b.py
models/
__init__.py
c.py
__init__.py
main.py
^^^ 应该是红色错误下划线,main.py 看起来像这样:
from controllers import a
^^^^
import models.c
^^^^^^
a.py:
import models.c
^^^^^^
我尝试了从导入和常规导入这两种方法,因为可能只有一个有问题,但没有,在 VSC 中,在我这样导入的每个地方,它都告诉我无法导入 [directory]
(它仍然从 VSC 和终端通过 python3 main.py
)
我尝试过的事情
- 重启 VSC
- 重启我的电脑
- 更改
__init_.py
中的内容(但没有系统性,只是玩玩)
这是一个 visual studio 代码问题,导入有问题吗?我应该把东西放到 __init__.py
中吗?我可以抑制这个问题或以其他方式解决它吗?
最佳答案
在导入其他文件夹中的模块时,VSCode 默认从当前运行文件的父文件夹中搜索文件。例如:“a.py
”中的“import models.c
”,“a.py”的父文件夹“
”没有“controllers/
” .pymodels
”,所以终端显示警告。
当我删除“main.py
”的同级文件“__init__.py
”时,终端没有显示错误和警告:
对于“a.py
”,我在“launch.json
”中添加了如下设置,将项目文件夹路径添加到系统路径中,供VSCode查找:
"env": {
"PYTHONPATH": "${workspaceFolder}"
}
调试a.py:
更新:
在代码可以运行的前提下,我使用如下设置关闭Pylint显示的“import-error”:
"python.linting.pylintArgs": ["--disable=E0401"],
关于python - Visual Studio Code 告诉我它不能导入 python 模块,但它运行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65444018/