You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3相对导入报错ImportError: no known parent package问题求解

Python相对导入报错原因及解决方案

报错根本原因

  • 相对导入的逻辑依赖模块的包层级身份识别:Python执行相对导入时,会读取当前模块的__name__属性判断其所在的包结构,只有当模块是作为包的一部分被导入、__name__包含完整包路径(你的场景下应为python.wsgi)时,.代表的父包层级才能被正确识别。
  • 直接运行脚本会破坏包身份:当你直接执行python wsgi.py时,wsgi.py会被识别为顶层入口脚本,它的__name__会被强制设置为__main__,Python无法判断它属于python包,自然找不到.对应的父包,就会抛出你遇到的错误。即便python目录下存在__init__.py属于合法包,也不影响这个判定逻辑。

为什么去掉点的绝对导入可以正常运行?

当你直接运行wsgi.py时,Python会自动将该脚本所在的目录(也就是你的python目录)加入sys.path搜索路径,main是python目录下的直属子包,直接from main import api属于从顶层包开始的绝对导入,能直接在sys.path下匹配到main包,所以可以正常运行。

保留相对导入的正确运行方式

如果不想修改导入语句,可以用模块模式运行脚本,不要直接执行脚本文件:

  1. 切换工作目录到python文件夹的上一级目录
  2. 执行命令:python -m python.wsgi
    这种运行方式会将当前工作目录加入sys.path,wsgi.py会被识别为python包下的wsgi模块,__name__取值为python.wsgi,相对导入逻辑就能正常生效。

内容的提问来源于stack exchange,提问作者Pritam Bohra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 03:57:01