Python "module not found"或"relative path with no parent"或"no module named <app>"不一致的错误



我花了6个小时试图解决一个导入问题,看起来像这样:

目录:

workspace
workspace/src
workspace/src/app/main.py
workspace/src/app/__init__.py
workspace/src/app/api/api_v1.py
workspace/src/app/api/__init__.py

main.py

from app.api.api_v1 import api_router

api.py

from fastapi import APIRouter
api_router = APIRouter()

试图运行main.py:

时出现错误从app.api
  1. 。Api_v1导入api_router;app模块未找到
  2. 从.api
  3. 。Api_v1导入api_router;相对导入,但没有父模块
  4. 从api。Api_v1导入api_router;这个可以工作,但是linting不工作

我然后添加额外的路径到.vscode设置:

{
"python.analysis.extraPaths": ["./src/app"]
}

我在windows上运行WSL2,文件在挂载的驱动器上,但将其移动到linux WSL远程的主驱动器上:/mnt/c/james>/home/james/~ $

我的问题是为什么我运行main.py,它给出了错误1,然后马上再次运行它给出了错误2?然后添加额外的路径没有什么不同,然后第二天早上我重启了我的笔记本电脑,一切都神奇地工作了?

我想哭…

似乎答案可能是我需要更改在终端中运行main.py的目录:

this don't work:

~workspace/$ main.py

如此:

~workspace/$ cd src/
~workspace/src/$ main.py