Python报错ModuleNotFoundError:api非包,__init__.py为何未生效?
解决ModuleNotFoundError: No module named 'api.routers'问题
你遇到的问题核心是脚本运行方式导致的包识别错误:当直接运行api.py时,Python会把该文件所在的backend/api目录当成脚本的执行目录,而非将api识别为可导入的包。哪怕你添加了__init__.py,这种运行方式下Python也不会把当前目录当作包处理。
方案1:使用相对导入
修改api.py里的导入语句,用相对路径指向当前包下的routers:
from .routers import phone
这里的.代表当前包,Python会自动在api目录下查找routers子包,完全匹配你的目录结构。
方案2:从父目录以模块方式运行
回到backend目录(即api文件夹的上级目录),用模块运行的方式启动api.py:
python -m api.api
这种方式会把backend加入Python的模块搜索路径,此时api会被识别为顶级包,api.routers就能正常被找到并导入。
内容的提问来源于stack exchange,提问作者Istvan
相关产品推荐
相关产品推荐

