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

Python "module not found" or "relative path with no parent" or "no module named <app>" inconsistent errors

我花了 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:

  1. from app.api.api_v1 导入 api_router > 未找到应用程序模块
  2. from .api.api_v1 import api_router > 相对导入但没有父模块
  3. from api.api_v1 import api_router > 这有效但 linting 无效

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

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

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

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

我想哭...

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

这行不通:

~workspace/$ main.py

这个有效:

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